首页 > 解决方案 > AngleSharp Css 使用路径查询元素样式

问题描述

仅给定一个 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

标签: anglesharp

解决方案


在 github 项目问题跟踪器https://github.com/AngleSharp/AngleSharp.Css/issues/64上得到了对此的回应

好吧,要获得计算样式,您需要与 DOM 建立连接。毕竟,像选择器这样的东西只能在可用的 DOM 结构的上下文中计算。我猜你所追求的是“伪造”DOM,即,如果你看到一些选择器(如 body>table>tbody>tr>td)创建最小的 DOM 以获取满足选择器的元素。然后使用这个元素来获取计算的样式,对吗?开箱即用这是不可能的,但我认为写这个应该是可行的。


推荐阅读