Less教程詳解
什麼是Less CSS
LESSCSS是一種動態樣式語言,屬於CSS預處理語言的一種,它使用類似CSS的語法,為CSS的賦予了動態語言的特性,如變數、繼承、運算、函式等,更方便CSS的編寫和維護。
LESSCSS可以在多種語言、環境中使用,包括瀏覽器端、桌面客戶端、服務端。
語言特性快速預覽:
變數:
變數允許我們單獨定義一系列通用的樣式,然後在需要的時候去呼叫。所以在做全域性樣式調整的時候我們可能只需要修改幾行程式碼就可以了。
LESS原始碼:
@color: #4D926F;#header { color: @color;
}h2 { color : @color;
}
編譯後的CSS:
#header { color: #4D926F;
}h2 { color: #4D926F;
}
混合(Mixins)
混合可以將一個定義好的class A輕鬆的引入到另一個class B中,從而簡單實現class B繼承class A中的所有屬性。我們還可以帶引數地呼叫,就像使用函式一樣。
LESS原始碼:
.rounded-corners (@radius: 5px) { -webkit-border-radius: @radius; -moz-border-radius : @radius; -ms-border-radius: @radius; -o-border-radius: @radius; border-radius: @radius;
}#header { .rounded-corners;
}#footer { .rounded-corners(10px);
}
編譯後的CSS:
#header { -webkit-border-radius: 5px; -moz-border-radius : 5px; -ms-border-radius: 5px; -o-border-radius: 5px; border-radius: 5px;
}#footer { -webkit-border-radius: 10px; -moz-border-radius: 10px; -ms-border-radius: 10px; -o-border-radius: 10px; border-radius: 10px;
}
巢狀
我們可以在一個選擇器中巢狀另一個選擇器來實現繼承,這樣很大程度減少了程式碼量,並且程式碼看起來更加的清晰。
LESS原始碼:
#header { h1 { font-size: 26px; font-weight: bold;
} p { font-size: 12px; a { text-decoration: none;
&:hover { border-width: 1px
}
}
}
}
編譯後的CSS:
#header h1 { font-size: 26px; font-weight: bold;
}#header p { font-size: 12px;
}#header p a { text-decoration: none;
}#header p a:hover { border-width: 1px;
}
函式和運算
運算提供了加,減,乘,除操作;我們可以做屬性值和顏色的運算,這樣就可以實現屬性值之間的複雜關係。LESS中的函式一一映射了JavaScript程式碼,如果你願意的話可以操作屬性值。
LESS原始碼:
@the-border: 1px;@base-color: #111;@red: #842210;#header { color: (@base-color * 3); border-left: @the-border; border-right: (@the-border * 2);
}#footer { color: (@base-color + #003300); border-color: desaturate(@red, 10%);
}
編譯後的CSS:
#header { color: #333; border-left: 1px; border-right: 2px;
}#footer { color: #114411; border-color: #7d2717;
}
更多說明
更多更詳細的語法特性請參見語言文件
快速上手
LESSCSS的使用是很容易的,首先,使用你最常使用的程式碼編輯器,按LESSCSS的語法規則寫好.less檔案,接下來,使用編譯工具它編譯成.css,最後再引入頁面即可。
GUI編譯工具
為方便起見,建議初學者使用GUI編譯工具來編譯.less檔案,以下是一些可選GUI編譯工具:
koala(Win/Mac/Linux)
國人開發的LESSCSS/SASS編譯工具。下載地址:http://koala-app.com/index-zh.html
Codekit(Mac)
一款自動編譯Less/Sass/Stylus/CoffeeScript/Jade/Haml的工具,含語法檢查、圖片優化、自動重新整理等附加功能。下載地址http://incident57.com/codekit/
WinLess(Win)
一款LESS編譯軟體。下載地址http://winless.org/
SimpleLess(Win/Mac/Linux)
一款LESS編譯軟體。下載地址http://wearekiss.com/simpless
Node.js庫
LESSCSS官方有一款基於Node.js的庫,用於編譯.less檔案。
使用時,首先全域性安裝less(部分系統下可能需要在前面加上sudo切換為超級管理員許可權):
npm install -g less
接下來就可以使用lessc來編譯.less檔案了:
lessc example/example.less example/example.css
更多選項可以直接執行lessc檢視說明。
瀏覽器端使用
LESSCSS也可以不經編譯,直接在瀏覽器端使用。
使用方法:
下載LESSCSS的.js檔案,例如lesscss-1.4.0.min.js。
在頁面中引入.less檔案
<link rel="stylesheet/less" href="example.less" />
需要注意
rel
屬性的值是stylesheet/less
,而不是stylesheet
。引入第1步下載的.js檔案
<script src="lesscss-1.4.0.min.js"></script>
需要特別注意的是,由於瀏覽器端使用時是使用ajax來拉取.less檔案,因此直接在本機檔案系統開啟(即地址是file://
開頭)或者是有跨域的情況下會拉取不到.less檔案,導致樣式無法生效。
還有一種情況容易導致樣式無法生效,就是部分伺服器(以IIS居多)會對未知字尾的檔案返回404,導致無法正常讀取.less檔案。解決方案是在伺服器中為.less檔案配置MIME值為text/css
(具體方法請搜尋)。或者還有一種更簡單的方法,即是直接將.less檔案改名為.css檔案即可。
更多說明
更多使用上的說明請參見使用說明。
更新說明
1.4.0
1.4.0已經正式釋出,這個版本引入了一些新特性,如派生(extends)、data-uri
函式以及更多的數學函式。詳細的變更情況請檢視更新日誌。
在這個版本中,有一些不相容的變化。
@import-once
被移除,現在@import
的預設行為就是隻引入一次(和舊版本@import-once
功能一樣)。像
(~"[email protected]{index}") {...}
這樣在選擇器中插入變數的語法不再被支援,請使用.myclass_@{index} {...}
來代替,這種新語法在1.3.1以上版本中都支援。用於瀏覽器的less.js不再包含es5-shim.js。因為我們之前用的es5-shim.js版本中有一些錯誤,而新版本的體積又明顯變大了。使用時請根據需要選用es5-shim或者是隻在現代瀏覽器中使用。
引入了一種“嚴格運算模式”(可選),在嚴格運算模式中,數學運算必須被括號包裹,如:
(1 + 1) // 21 + 1 // 1+1