2013-07-18 20 views
2

我用的凹槽(https://github.com/twitter/recess)壓縮CSS文件編譯有問題的CSS文件與Twitter休會

div { 
    color: red 
    border: 1px solid red 
} 

p { 
    color: blue 
} 

# recess test.css --compress (No output) 

正如你所看到的,缺少冒號在CSS文件中,以便凹槽沒有輸出任何東西,但在真正的瀏覽器中,如果只有部分CSS包含錯誤,那麼它確實很好,例如:

eg http://jsfiddle.net/VDQLU/(請參閱p中的bule顏色,不受上述錯誤影響)

問:是否有任何方法來壓縮文件?或使用其他工具?

回答

5

凹陷失敗的原因,是因爲這是無效的CSS。 (你可能知道)。它的原因無論如何在瀏覽器上使用,因爲瀏覽器假設一些Web開發人員不會使用正確的語法,並且他們希望與舊版網站兼容,不是因爲分號在CSS上是可選的,或者因爲CSS分析程序是應該有一個怪癖模式!

我會使用sed行來清理css文件,並從現在起使用正確的css代碼。下面是一個例子sed的行:(備份你的CSS文件第一!)

sed -i '/{/,/}/ { /[}{]/ !{ /\/\*.*[^(\*\/\t)][\t ]*$/,/\*\// !{ s/\([^(\*\/);\t ]\)[\t ]*$/\1;/ }}}' yourcssfile.css

這sed的行會:

  • 添加;只,沒有分號結束線;也就是說,如果你有一些線與分號結束,你不會有兩個分號結束後,另一個(類似;;
  • 檢查也可用於註釋行,在一行上,如:/* some comment */,或者多行。

這並不意味着更改完全自動完成;你可能不得不做一些手動修復(也許手動黑客sed線),但如果你的css文件看起來像你的例子,它應該幾乎完美。

2

任何形式的CSS壓縮都會從您的CSS中刪除換行符。

雖然瀏覽器現在可以理解您的代碼,但沒有換行符來幫助處理不正確的代碼,它只會有一個字符串。

壓縮該代碼的任何壓縮器都不會對你有任何好處,因爲一旦換行符被刪除,幾乎肯定不會被任何瀏覽器所理解。

-1

請使用這樣的div風格。 div {color:red; border:solid red;}

它爲您的結果提供了一個很好的解決方案。