2017-01-02 75 views
0

有了這個CSS擺脫一個解析的HTML元素的CSS屬性:如何使用AngleSharp

.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)

回答

2

所有的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; 

請記住,如果沒有這樣的元素存在(無匹配查詢),而GetComputedStyle方法只在有限的工作方式element可以爲空。另外,如果您的CSS是在外部樣式表中定義的,請確保激活資源加載。

希望這會有所幫助!

+0

經過小小的修復,感謝您的代碼工作。它只需要將文檔加載支持添加到配置中,如下所示:'var config = Configuration.Default.WithDefaultLoader()。WithCss();否則文檔主體總是空的。 – SamuGG

+0

是的(我專注於CSS部分 - 所以我跳過了配置中的其他所有內容)。我修改了我的答案。感謝您的提醒! –