2015-12-11 27 views
0

我使用AngleSharp來解析一些CSS文件,比較它們的結構並從中構建輸出文件。該工具使所有的聲明明確,即如果源規則是:如何將多個CSS聲明合併爲速記

.recent-work-wrap .overlay { 
    padding: 15px; 
} 

我獲得以下從AngleSharp輸出:

.recent-work-wrap .overlay { 
    padding-top: 15px; 
    padding-right: 15px; 
    padding-bottom: 15px; 
    padding-left: 15px; 
} 

這是一個好比較的規則和發現變化,但問題是,這條規則如何結合到上面的速記中?因此,對於另一個例子

,如何從這個獲得:

.sample-rule { 
     margin-right: auto; 
     margin-left: auto; 
     margin-top: 30px; 
     margin-bottom: 30px; 
    } 

這個

.sample-rule { 
     margin: 30px auto; 
    } 

的情況變得更糟與CSS3的聲明,因爲他們真的可以有很多的參數..我檢查了一些CSS minifier/uglifier工具,但他們大多使用RegEx刪除空白和較小的優化。 是否有一種已知的方法/工具/庫來編寫多個聲明中的最佳shorthands?

回答

1

你怎麼得到這個輸出?您是否嘗試過查看Style屬性的速記聲明(例如,Margin)?

在內部,AngleSharp只使用了longhand聲明,因此輸出結果與它的詳細一樣。然而,AngleSharp知道大多數shorthands,並且應該能夠將這些longhands重新組合成它們的速記形式。

我不知道這是否對您有所幫助。如果不是,那麼請張貼一些代碼(MWE),我會嘗試優化這個答案。

+0

我會盡量建立一個最小的例子。但基本上,我正在遍歷ICssStyleSheet中的規則併爲每個規則存儲/生成輸出。所以你在說什麼,我可以在AngleScript中編程建立規則(不解析CSS字符串),並通過調用'ToCss()'獲得短手代碼? – gpinkas

+0

有點,是的。通常,'ToCss()'應該已經試圖獲得速記符號(如果可能的話),然而,你可以通過直接調用速記聲明來強制這種表示形式(參見上面的例子'Margin',它是'MarginTop'的縮寫, 'MarginBottom'等反映了各自的CSS聲明'margin-top',...)。 –

+0

這個效果非常好,AngleSharp只是很棒! :)我不確定這些「初始」值是否正確。 – gpinkas