你不要覺得CSS沒什么重要可言?最近幾年他成為一個熱門的話題,很多人都在討論他。CSS并不是一個簡單的事情,前端開發者可以使用他將頁面制作的更佳漂亮。看得更遠一些,我們更關心的是網站的性能以及如何制作出更好的網站。在本文中,我想分享我最近幾個月的學到的有關于CSS編碼的知識。作為一個程序員,我真正感興趣的事情是框架(Architectural)部分。我覺得寫CSS應該需要去改變,為此我深挖了很多知識。我搜索了好的程序、工作流和原則。這篇文章將帶領大家和CSS一起旅行,很多人都說寫CSS并不是編程,我就不同意,我說寫CSS同樣是有趣的,富有挑戰性的。
CSS預處理器
讓我們一起面對吧,在世界上寫CSS并不是一件可笑的事情。CSS預處理器看起來就像CSS,但他更像一個魔術師一樣,使用一些魔法會產生有效的CSS代碼。這讓你的樣多和瀏覽器之間新增加了一層,這樣不是更加的糟糕嗎?看上去是這樣,但事實不是這樣的,因為CSS預處理器提供了一些真正有用的特性。
連接(Concatenation)
我認為最有價值的東西是連接你的文件。我相信,你知道使用@import來引用你的.css文件,告訴瀏覽器獲取這個文件。這樣做,瀏覽器需要增加一個請求,這樣有點麻煩,因為你可能有很多個這樣的文件。增加額外的請求,使你的程序性能變得更低。如果您使用CSS預處理器語言,這個問題將不會存在。他們只會編譯你樣式文件中單個.css文件。
擴展(Extending)
LESS和Sass是最主要的兩個CSS預處理器。我們都支持擴展。雖然他們的工作方式略有不同,但他們的想法是一樣的。你可以做一個基本的類(通常稱為mixin)和一群屬性,然后在另一個選擇器導入這些屬性,如:
CSS Code復制內容到剪貼板
// less
.bordered(@color: #000) {
border: dotted 2px @color;
}
.header { .bordered; }
.footer { .bordered(#BADA55); }
// 編譯出來的CSS
.header {
border: dotted 2px #000000;
}
.footer {
border: dotted 2px #bada55;
}
這里的問題是,如果你沒有定義一個參數的mixin,例如剛才的示例:
CSS Code復制內容到剪貼板
.bordered {
border: dotted 2px #000;
}
這是最后編譯的CSS文件,無論你是否使用都沒有任何關系。因為他是一個有效的選擇器。在Sass中我們可以做得更靈活一些。他有混合(mixins)、擴展(extends)和占位選擇器(placeholders)(如果您想看到他們之間的區別,我強烈建議您閱讀這篇文章)。接下來我們簡單看看Sass是如何工作和編譯的:
新聞熱點
疑難解答