less學(xué)習(xí)筆記

一、什么是less

less是一種動(dòng)態(tài)樣式語(yǔ)言,屬于css預(yù)處理語(yǔ)言的一種,它使用類似css的語(yǔ)法,為css賦予了動(dòng)態(tài)語(yǔ)言的特性,如變量、運(yùn)算、函數(shù)等。方便了css的編寫(xiě)和維護(hù)。

less可以在多種語(yǔ)言、環(huán)境中使用,包括瀏覽器端、桌面客戶端、服務(wù)端。

本文記錄了開(kāi)發(fā)中最常用的幾種less語(yǔ)法。

二、編譯工具

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

如果使用其他開(kāi)發(fā)工具也可以,比如使用VSCode的話就可以安裝less插件easy less實(shí)現(xiàn)保存自動(dòng)編譯。因?yàn)槲沂褂玫木褪荲SCode編輯器,所以我使用了這個(gè)插件做編譯處理。

基本使用:

首先新建目錄

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

編寫(xiě)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>

編寫(xiě)mian.less文件:

@charset "utf-8";

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

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

三、less語(yǔ)法

1、注釋

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

使用/**/的注釋是會(huì)被編譯進(jìn)css文件的,而使用//的注釋不會(huì)被編譯進(jìn)css文件。

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

/*我會(huì)被編譯進(jìn)css文件*/

//我不會(huì)被編譯進(jìn)css文件

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

/*我會(huì)被編譯進(jìn)css文件*/

由于我們應(yīng)該一般編寫(xiě)和維護(hù)less文件,所以我們一般采用第二種注釋,無(wú)需將注釋編譯進(jìn)css文件。

2、變量

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

變量的使用:

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

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

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

3、混合

混合的意思是說(shuō)可以將less寫(xiě)法與常規(guī)的css寫(xiě)法進(jìn)行混合書(shū)寫(xiě)。

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

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

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

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

.border {  
    border:3px solid pink
}

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

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

混合也可以帶參數(shù)

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

.mybox {
    .border(5px);
}

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

參數(shù)也可以設(shè)置一個(gè)默認(rèn)值:

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

.mybox {
    .border();
}

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

4、匹配模式

根據(jù)不同的參數(shù)可以匹配不同的樣式:

.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) 傳入不同的參數(shù),實(shí)現(xiàn)不同的定位方式
}

5、運(yùn)算

less中可以實(shí)現(xiàn)運(yùn)算,任何數(shù)字、顏色或者變量都可以參與運(yùn)算(+ - * /),運(yùn)算應(yīng)該被包裹在括號(hào)中。

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

.mybox {
    .border();
}

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

6、嵌套

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

//html
<div id="list">
    <li><a href="#">less學(xué)習(xí)</a><span>2017-11-26</span></li>
    <li><a href="#">less學(xué)習(xí)</a><span>2017-11-26</span></li>
    <li><a href="#">less學(xué)習(xí)</a><span>2017-11-26</span></li>
</div>

在css中如果我們需要對(duì)這一html結(jié)構(gòu)的樣式進(jìn)行渲染,就會(huì)使用#list、#list li、#list li a、#list li span等選擇器。在less中我們有了更簡(jiǎn)潔的寫(xiě)法:

//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參數(shù)

有時(shí)候我們不想單個(gè)操作參數(shù),可以使用@argemunts操作參數(shù)。

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

.test_arguments{
    .border_arg();
}

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

8、避免編譯

有時(shí)候我們需要輸出一些不正確的css語(yǔ)法或者使用一些less不認(rèn)識(shí)的專有語(yǔ)法,要輸出這樣的值我們需要使用~""將語(yǔ)法包裹起來(lái),語(yǔ)法放在雙引號(hào)或者單引號(hào)中間。從而實(shí)現(xiàn)不讓less編譯該段代碼:

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

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

推薦閱讀更多精彩內(nèi)容

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