Sass是一種動態樣式語言,Sass語法的縮排語法,比Css比多出很多功能,如變量,嵌套,運算,繼承,顏色處理,函數等,易於閱讀。Cass的安裝需要安裝Ruby環境,是服務器端處理的,Less是需要引入Less.js來處理代碼輸出css到瀏覽器,也可以在開發環節使用Less,然后編譯成css文件,直接放在項目中,有less.app、SimpleLess、CodeKit.app這樣的工具,也有在線編輯地址。
我偶然發現LESS之后我就開始堅定的使用它了。CSS本身對我來說從來不是問題,但是我很好奇使用變量來沿着一個調色盤為我的網站或模板創建一些東西的想法。擁有一個提供固定數量選項可選的色盤可以讓我避免顏色太跳躍以至於從一個已定的風格中脫離。
事實證明,LESS——以及Sass——功能比這個要多太多。LESS和Sass在語法上有些共性,比如下面這些:
● 混入(Mixins)——class中的class;
● 參數混入——可以傳遞參數的class,就像函數一樣;
● 嵌套規則——Class中嵌套class,從而減少重復的代碼;
● 運算——CSS中用上數學;
● 顏色功能——可以編輯顏色;
● 名字空間(namespace)——分組樣式,從而可以被調用;
● 作用域——局部修改樣式;
● JavaScript 賦值——在CSS中使用JavaScript表達式賦值。
LESS和Sass的主要不同就是他們的實現方式,LESSS是基於JavaScript,所以,是在客戶端處理的。
另一方面,Sass是基於Ruby的,然后是在服務器端處理的。很多開發者不會選擇LESS因為JavaScript引擎需要額外的時間來處理代碼然后輸出修改過的CSS到瀏覽器。關於這個有很多種方式,我選擇的是只在開發環節使用LESS。一旦我完成了開發,我就復制然后粘貼LESS輸出的到一個壓縮器,然后到一個單獨的CSS文件來替代LESS文件。另一個選擇是使用LESS.app來編譯和壓縮你的LESS文件。兩個選擇都將最小化你的樣式輸出,從而避免由於用戶的瀏覽器不支持JavaScript而可能引起的任何問題。盡管這不大可能,但終歸是有可能的。
LESS Is More
介紹
在你的項目中引入LESS很簡單:
1.下載less.js;
2.創建一個文件來放你的樣式,比如style.less;
3.添加以下代碼到你的HTML的<head>中:
- <link rel="stylesheet/less" type="text/css" href="styles.less">
- <script src="less.js" type="text/javascript"></script>
請注意link的rel屬性。你需要在屬性值的最后面使用/less以使LESS起作用。然后在link后面引入scirpt也是必須的。如果你在用HTML5語法——為什么不用呢?——你可以省去type=”text/css”和type=”text/javascript”。
其實也有一個服務器端的LESS版本。在服務器上安裝LESS的最簡單的辦法就是使用Node Package Manager (NPM,一看就知道是基於Node.js的)。
變量
如果你是個開發者,變量應該是你最好的朋友。如果你要重復的使用一個信息(本例中就是color),將它設置為一個變量就可以。這樣,你就可以保證自己的一致性並可能減少滾動代碼來查找顏色值、復制、粘貼等繁瑣的工作了。你甚至可以加或者減一些你需要渲染的HEX值到這些顏色上面。看下例子:
- @blue: #00c;
- @light_blue: @blue + #333;
- @dark_blue: @blue - #333;
如果我們將這些樣式應用到3個div上面,我們就可以看到由加上和減掉的HEX值形成的漸變的效果:
從@light_blue到@blue到@dark_blue的漸變效果
關於變量在LESS和Sass中的唯一區別就是,LESS用@,Sass用$。同時還有一些作用域上的差別,我后面會提到。
混入(mixin)
偶爾,我們會創建一些會在樣式表中重復使用的樣式規則。沒有人會阻止你在一個HTML的元素中使用多個class,但是你可以用LESS,在樣式表中完成。為了描述這一點,我寫了一點兒例子:
- .border {
- border-top: 1px dotted #333;
- }
- article.post {
- background: #eee;
- .border;
- }
- ul.menu {
- background: #ccc;
- .border;
- }
