#anglesharp
#AngleSharp
Вопрос:
Учитывая только таблицу стилей css, возможно ли проанализировать и запросить таблицу стилей, используя какой-то запрос пути, чтобы получить вычисленный стиль, аналогичный тому, что возвращается из IElement.ComputeCurrentStyle()
?
var css = @"
<style>
table { font-family:foobar }
td { font-weight:bold }
</style>
";
var config = Configuration.Default.WithDefaultLoader().WithCss();
var context = BrowsingContext.New(config);
IDocument document = await context.OpenAsync(req => req.Content(css));
ICssStyleSheet sheet = document.GetStyleSheets().OfType<ICssStyleSheet>().First()
Возможно ли сделать что-то вроде sheet.GetComputedStyle("body>table>tbody>tr>td")
извлечения a ICssStyleDeclaration
?
Ответ №1:
Получил ответ на это в отслеживателе проблем проекта github https://github.com/AngleSharp/AngleSharp.Css/issues/64
Ну, чтобы получить вычисляемый стиль, вам нужно иметь подключение к DOM. В конце концов, такие вещи, как селекторы, могут быть вычислены только в контексте доступной структуры DOM. Я предполагаю, что вам нужно «подделать» DOM, то есть, если вы видите какой-либо селектор (например, body> table> tbody> tr> td), создайте минимальный DOM, чтобы иметь возможность получить элемент, который удовлетворяет селектору. Затем используйте этот элемент, чтобы получить вычисляемый стиль, верно? Из коробки это невозможно, но я думаю, что это должно быть выполнимо, чтобы написать это.