初識css預編譯之Less

什么是less

less是CSS的預處理器,學過C語言的同學應該對預處理器挺熟悉的把,C語言的編譯過程就分為:預處理 -> 編譯 -> 匯編 -> 連接 這幾個過程;其中C語言的預編譯包括導入頭文件、對宏定義進行宏替換等動作;

例如,在C語言中有如下代碼:

//我們在代碼中需要使用一個常數8
....
int x = 8; //第一處用到
...
int y = 8;  //第二處用到
...
int z = 8;  //第三處用到

此時,如果想修改這個常數為7,我們需要把每一處都找出并進行替換,如果更多位置用到該常數,修改它所花費的代價將會更高。我們可以通過宏定義解決該問題:

#define CONST_VALUE 8
...
int x = CONST_VALUE;
...
int y = CONST_VALUE;
...
int z = CONST_VALUE;

此時,如果想修改常數值的話,只需要修改第一行就ok了,大大減輕了工作量;

另外,需要說明的是,上面的這種寫法還不是最優的,寫成 const int const_value = 8 ;更好,因為這樣可以進行類型檢查。好吧,就此打住,畢竟這不是介紹C語言的blog,只是拋磚引玉而已,可不能把磚拋太遠。

而css預處理語言,無論是sass還是less,和c語言預處理目的一致,都是為了減輕工作量而已,但是,大家一定要清楚下面一句話:

工具能夠幫助我們提高生產效率,但并不能幫助我們減少需要學習的知識。相反,為了掌握某個工具的使用,我們甚至要學更多的知識。 所以,學習終歸是沒有捷徑可走的。

那么,為什么有時候,原生css編寫代碼效率較低,下面再舉一個例子吧。

比如,我們需要寫兩層div的嵌套,子div寬度是父div寬度的一半,已知父div為400px :

/*父div的樣式*/
#p_div{
  width:400px;
}
/*子div的樣式*/
#s_div{
  width:200px;
}

用瀏覽器測試了一下,發現不太美觀,想把父div改為500px進行測試,我們需要找到這兩處,然后進行修改,和上面的C語言的例子非常類似,操作較為麻煩;

你也許會想,如果定義一個變量,相關屬性都基于該變量進行操作,如果想改變這些屬性的值,只需要改一個變量,那該有多好。好吧,我想,less應該可以滿足你。

less的使用

less是一種css的預處理語言,最終,瀏覽器只認識css樣式,而不認識less語言,所以我們需要工具將用less編寫的樣式轉換成css樣式;

less編寫的樣式文件通常以.less為后綴;

1、基于node.js庫的less編譯工具

其實,你不需要懂什么是基于node.js庫,只需要知道,通過它安裝的 lessc 就是一個可執行文件而已;

安裝方式:

npm install -g less

稍微解釋一下這條命令是什么意思,npm是node package manager的縮寫,可以通過它安裝在npmjs.com上托管的軟件,-g表示全局安裝;

完成安裝后,就可以在命令行使用 lessc 命令了;

還是以上面嵌套div作為例子,編寫demo.less文件,其代碼為:

@p_width:400px;

#p_div{
  width: @p_width;
}
#s_div{
  width:(@p_width/2);
}

使用命令

lessc demo.less demo.css

將less代碼編譯為css樣式,編譯后生成的demo.css包含樣式代碼為:

#p_div {
  width: 400px;
}
#s_div {
  width: 200px;
}

和我們上面手寫的代碼一模一樣;如果想把#p_div的寬度變為500px,只需要修改demo.less的第一行,重新用 lessc 進行編譯即可;

2、瀏覽器引入lesscss.js文件

前面我們說過,瀏覽器是不懂less語法的,所以,不能直接使用 *.less 文件作為頁面樣式;但是,瀏覽器不懂,我們可以 “教他” 懂;

例如,通過以下代碼:

<script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/2.7.2/less.min.js">
</script>

我們將解析less的js代碼庫引入,這樣,就能直接在html中使用less語法了;例如:

<link rel="stylesheet/less" href="demo.less" />

直接引入一個less文件,或者是:

<style type="text/less">
  /*編寫less代碼 */
</style>

直接在html文件中編寫less代碼。

3、在線完成less轉換css

還可以通過某些在線工具實現less到css的轉換,例如 通過開源中國社區的 在線工具 完成轉換,并將轉換后的代碼復制到自己的css文件中即可;

less在線編譯

4、其他一些圖形化(GUI)編譯工具

如koala、Codekit、WinLess、SimpleLess;

后記

本文并沒有詳細寫less語法,只是說明了less為什么而存在,只有我們知道了事物存在的意義,才能從它來的方向,去真正地理解它;

參考 less中文網 ;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,264評論 25 708
  • 簡介 CSS(層疊樣式表)是一門歷史悠久的標記性語言,同 HTML 一道,被廣泛應用于萬維網(World Wide...
    老夫的天閱讀 1,981評論 1 29
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,796評論 1 92
  • 五十八、殘殺棄嬰 唐湘清著 葉伯皋先生說,在以前軍閥連年的內戰中,各地福室,避居青島的很多。有一天清晨,青島市的近...
    謙與默閱讀 390評論 0 0
  • 人最怕愛人愛到沒有自我,卻情不自禁忘我。 以前,我覺得人妖很惡心,直到我開始瘋狂地了解她們。就我的理解,相較于同性...
    拒絕長大的小姐姐閱讀 1,922評論 1 2