2

有这个CSS:

.foo { background-size: 10px 20px; }

而这个HTML:

<span class="foo"></span>

而这个 C#:

var parser = new HtmlParser();
var doc = parser.Parse("http://localhost/test.html");
var element = doc.QuerySelector("span.foo");

如何获取元素的关联背景宽度和高度?

(目前我使用的是 AngleSharp 0.9.9 版)

4

1 回答 1

5

首先C#代码是错误的。您传递给的字符串parser.Parse是 HTML 代码,而不是 URI。此外,您的代码不会进行任何 CSS 解析 - 它仅使用 HTML 解析器。因此,让我们使用浏览上下文来获得您所需要的一切。

var config = Configuration.Default.WithDefaultLoader().WithCss();
var context = BrowsingContext.New(config);
var document = context.OpenAsync("http://localhost/test.html").Result;
var element = document.QuerySelector("span.foo");
var style = document.DefaultView.GetComputedStyle(element);
var size = style.BackgroundSize;

请记住,element如果不存在这样的元素(不匹配查询)并且该GetComputedStyle方法只能以有限的方式工作,则可能为 null。此外,如果您的 CSS 是在外部样式表中定义的,请确保激活资源加载。

希望这可以帮助!

于 2017-12-12T19:27:19.827 回答