less學習筆記

一、什么是less

less是一種動態樣式語言,屬于css預處理語言的一種,它使用類似css的語法,為css賦予了動態語言的特性,如變量、運算、函數等。方便了css的編寫和維護。

less可以在多種語言、環境中使用,包括瀏覽器端、桌面客戶端、服務端。

本文記錄了開發中最常用的幾種less語法。

二、編譯工具

瀏覽器并不認識less格式文件,我們需要使用編譯工具將less文件編譯成css文件,可以選擇kaola這個工具編譯。這個工具使用也十分簡單,將less文件的目錄拖入,然后設置輸出路徑。然后每次只要保存less文件就可實現編譯。

如果使用其他開發工具也可以,比如使用VSCode的話就可以安裝less插件easy less實現保存自動編譯。因為我使用的就是VSCode編輯器,所以我使用了這個插件做編譯處理。

基本使用:

首先新建目錄

 --images
--style
  -- main.less
index.html

編寫index.html文件

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <title>less編譯工具使用</title>
  <link rel="stylesheet" href="./style/main.css"> //在這里引入的是編譯后的css文件
 </head>
 <body>
    <div id="main"></div>
 </body>
</html>

編寫mian.less文件:

@charset "utf-8";

#main {
    width: 100px;
    height: 100px;
    background-color: red;
}

保存編譯后,在style目錄下就會出現main.css文件,這是編譯后的文件,我們可以直接使用。

三、less語法

1、注釋

less中有兩種注釋:/**///

使用/**/的注釋是會被編譯進css文件的,而使用//的注釋不會被編譯進css文件。

//main.less
@charset "utf-8";

/*我會被編譯進css文件*/

//我不會被編譯進css文件

//執行編譯后的main.css
@charset "utf-8";

/*我會被編譯進css文件*/

由于我們應該一般編寫和維護less文件,所以我們一般采用第二種注釋,無需將注釋編譯進css文件。

2、變量

less中使用@聲明一個變量,和一般程序語言不同的是,@符號與變量之間不能有空格,比如我們要聲明一個myWidth這個變量:@myWidth。變量的賦值類似鍵值對:@myWidth : 200px;

變量的使用:

//less文件
@charset "utf-8";

@myWidth : 200px;
@myHeight : 500px;

#main {
    width: @myWidth;
    height: @myHeight;
    background-color: yellowgreen;
}

3、混合

混合的意思是說可以將less寫法與常規的css寫法進行混合書寫。

css中為某個元素添加樣式,首先需要為其添加類名,使用混合則很方便

//less文件
@charset "utf-8";

@myWidth : 200px;
@myHeight : 200px;

#main {
    width: @myWidth;
    height: @myHeight;
    background-color: yellowgreen;
    .border
}

.border {  
    border:3px solid pink
}

在css中我們需要將.border這個類添加到元素的class屬性中才能生效。但是在less中,只要將.border加入#main中就可以實現效果。

//編譯后的css
@charset "utf-8";
#main {
  width: 200px;
  height: 500px;
  background-color: yellowgreen;
  border: 3px solid green;
}
.border {
  border: 3px solid green;
}

混合也可以帶參數

//less
.border(@mywidth){
    border: @mywidth solid green;
}

.mybox {
    .border(5px);
}

//css
.mybox {
  border: 5px solid green;
}

參數也可以設置一個默認值:

//less
.border(@mywidth:4px){
    border: @mywidth solid green;
}

.mybox {
    .border();
}

//css
.mybox {
  border: 4px solid green;
}

4、匹配模式

根據不同的參數可以匹配不同的樣式:

.pos(r) {
    position:relative;
}

.pos(a) {
    position:absolute;
}

.pos(f) {
    position:fixed;
}

.pipei {
    width:200px;
    height:200px;
    background-color:green;
    .pos(f);     //.pos(r)   .pos(a) 傳入不同的參數,實現不同的定位方式
}

5、運算

less中可以實現運算,任何數字、顏色或者變量都可以參與運算(+ - * /),運算應該被包裹在括號中。

//less
.border(@mywidth:4px){
    border: @mywidth + 5px solid green;    //這里的單位可以省略,但是兩者必須有一個帶單位
}

.mybox {
    .border();
}

//css
.mybox {
  border: 4px solid green;
}

6、嵌套

嵌套是less中非常有用、高效的語法。

//html
<div id="list">
    <li><a href="#">less學習</a><span>2017-11-26</span></li>
    <li><a href="#">less學習</a><span>2017-11-26</span></li>
    <li><a href="#">less學習</a><span>2017-11-26</span></li>
</div>

在css中如果我們需要對這一html結構的樣式進行渲染,就會使用#list、#list li、#list li a、#list li span等選擇器。在less中我們有了更簡潔的寫法:

//less
#list {
    width: 600px;
    margin: 30px auto;
    list-style: none;
    padding: 0;

    li {
        height: 30px;
        line-height: 30px;
        background-color: pink;
        margin-bottom: 5px;

        a {
            float: left;
        }

        span {
            float: right;
        }
    }
}

//css
#list {
  width: 600px;
  margin: 30px auto;
  list-style: none;
  padding: 0;
}
#list li {
  height: 30px;
  line-height: 30px;
  background-color: pink;
  margin-bottom: 5px;
}
#list li a {
  float: left;
}
#list li span {
  float: right;
}

在less中使用偽類選擇器也十分方便:

//less
#list li a {
  float: left;
  &:hover {
    font-size:20px;
  }
}

//css
#list li a:hover {
  font-size: 18px;
}

7、arguments參數

有時候我們不想單個操作參數,可以使用@argemunts操作參數。

//less
.border_arg(@w:30px,@c:red,@xx:solid){
    border:@arguments;
}

.test_arguments{
    .border_arg();
}

//css
.test_arguments {
  border: 30px red solid;
}

8、避免編譯

有時候我們需要輸出一些不正確的css語法或者使用一些less不認識的專有語法,要輸出這樣的值我們需要使用~""將語法包裹起來,語法放在雙引號或者單引號中間。從而實現不讓less編譯該段代碼:

//less
width:~'calc(100%-35)'

//css
width: calc(100%-35);
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,517評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,087評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,521評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,493評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,207評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,603評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,624評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,813評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,364評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,110評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,305評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,874評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,532評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,953評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,209評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,033評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,268評論 2 375

推薦閱讀更多精彩內容

  • less是什么 Less 是一門 CSS 預處理語言,它擴充了 CSS 語言,增加了諸如變量、混合(mixin)、...
    劉摯珂閱讀 210評論 0 1
  • Less作為 CSS 的一種擴展,不僅完全兼容 CSS 語法,而且連新增的特性也是使用 CSS 語法,你可以在任何...
    zhangivon閱讀 582評論 0 1
  • 本人作為一名今年剛畢業的應屆生,目前的工作方向是前端開發,學習前端到現在差不多14個月,有9個月的工作經驗。從幾個...
    程愷閱讀 338評論 1 3
  • 1.less里面的注釋 less里面的注釋分為兩種,看下圖所示: 編譯之后的效果圖: 我們可以發現在編譯之后的cs...
    iplaycodex閱讀 607評論 0 0
  • 編譯器 koala 編譯器創建一個 style 文件夾,在其中創建 .less 文件,將文件夾拖入 koala 編...
    _月光臨海閱讀 324評論 0 0