less學(xué)習(xí)筆記1-語言特性(概覽)

本人作為一名今年剛畢業(yè)的應(yīng)屆生,目前的工作方向是前端開發(fā),學(xué)習(xí)前端到現(xiàn)在差不多14個(gè)月,有9個(gè)月的工作經(jīng)驗(yàn)。
從幾個(gè)月前就有在計(jì)劃學(xué)習(xí)css預(yù)處理相關(guān)的內(nèi)容,結(jié)果被各種耽誤,最近終于可以開始學(xué)習(xí)less。
在學(xué)習(xí)使用之前我們需要先安裝less
可以通過npm進(jìn)行安裝,下載并安裝node就可以使用npm,具體的安裝過程很簡(jiǎn)單就不詳細(xì)說了
筆記參考自less官網(wǎng),進(jìn)行個(gè)人理解的翻譯,方便自身理解,作為自身學(xué)習(xí)總結(jié)所用,之后會(huì)慢慢的加上自身練習(xí)的代碼。


變量

變量名稱定義需要@前綴

@blue: #5b83ad
@light-blue: @blue + #111;
.test{
    color: @light-blue;
}

變量實(shí)際上是“常量”,因?yàn)樗鼈冎槐欢x聲明一次

mixin(混合/混入):

mixin是將一個(gè)定義的樣式規(guī)則包含進(jìn)另外一個(gè)規(guī)則中

.background{
    background-image: url('test.png');
    background-repeat: no-repeat;
    background-size: 80% 80%;
}

如果我們需要在其他的樣式規(guī)則中使用到上述的樣式的話,可以直接在規(guī)則中引入。

#banner .img{
    width: 50px;
    height: 50px;
    .background;
}

嵌套規(guī)則:

#header{
    color: red;
    .nav{
        display: inline-block;
    }
    .logo{
        width: 30px;
        height: 30px;
    }
}

編譯為:

#header{
    color: red;
}
#header .nav{
    display: inline-block;
}
#header .logo{
    width: 30px;
    height: 30px;
}

在嵌套規(guī)則中可以使用偽選擇器(&代表當(dāng)前選擇器的父選擇器)

.list{
    color: blue;
    &:after{
        content: " ";
        display: block;
        height: 10px;
        width: 10px;
        background-color: #000;
    }
}

嵌套準(zhǔn)則和冒泡

像media和keyframe的指令可以嵌套在和選擇器一樣的地方。冒泡就是將指令放置在頂部,并且保持同一個(gè)規(guī)則集中的其他元素的相對(duì)順序不變。
條件指令,像@media,@supports,@document可以將選擇器復(fù)制進(jìn)它們的規(guī)則里面

.screen-color{
    @meida screen{
        color: green;
        @media (min-width: 768px){
            color: red;
        }
    }
    @media tv{
        color: black;
    }
}

編譯為:

@media screen{
    color: green;
}
@media screen and (min-width: 768px){
    color: red;
}
@media tv{
    color: black;
}

其余的非條件指令,如font-face或者keyframes 也會(huì)冒泡,它們的身體不變

#a{
    color: blue;
    @font-face{
        src: some-url;
    }
    padding: 2px;
}

編譯為:

#a{
    color: blue;
}
@font-face{
    src: some-url;
}
#a{
    padding: 2px;
}

運(yùn)算:

算術(shù)運(yùn)算操作符 +,-,,/ 可以對(duì)任意數(shù)字,顏色或者變量進(jìn)行運(yùn)算。
如果可能,運(yùn)算操作符會(huì)在加,減或者比較之前代入單位并且進(jìn)行轉(zhuǎn)換,結(jié)果的單位會(huì)等同于運(yùn)算式中最左邊的第一個(gè)顯式單位。
如果不能進(jìn)行轉(zhuǎn)換或者無意義時(shí),會(huì)忽略單位。可能的轉(zhuǎn)換: px->cm,rad->%

@cvs: 5cm+10mm;//6cm
@cvs: 2-3cm-5mm;//1.5cm 待定
@cvs: 2+5px-3cm;//4px
@base: 5%;
@filler: @base  2;//10%
@other: @base + @filler;//15%
@base-color: #000;
.test{
    color: #fff / 4;
    background-color: @base-color + #654;
    width: 50% / 2 +@filler
}

乘法和除法不會(huì)對(duì)數(shù)字進(jìn)行轉(zhuǎn)換,在大部分的情況下都是無意義的,比如一個(gè)長(zhǎng)度乘上另外一個(gè)長(zhǎng)度得到面積,而css并不支持面積。less會(huì)計(jì)算數(shù)字本身,然后分配一個(gè)顯式的單位給計(jì)算結(jié)果。

@base: 2cm  3mm;// 6cm

色值會(huì)分割成red,green,blue和α維度,計(jì)算會(huì)分別作用在rgb三個(gè)量綱上。如果用戶讓兩個(gè)色值相加,green量綱的計(jì)算結(jié)果會(huì)等于兩個(gè)色值的green量綱的值的相加結(jié)果,red量綱和blue量綱也是同樣計(jì)算方式。如果用戶將一個(gè)色值和一個(gè)數(shù)字進(jìn)行相乘,每個(gè)量綱都會(huì)乘上該數(shù)字。
注:算術(shù)運(yùn)算在α上是沒有定義的,因?yàn)樯档臄?shù)學(xué)計(jì)算上是沒有約定的標(biāo)準(zhǔn)含義的,不要依賴于當(dāng)前方式,因?yàn)橛锌赡茉谙乱粋€(gè)版本就發(fā)生改變了。
色值上的計(jì)算總是得到有效的色值,如果某一個(gè)顏色量綱的計(jì)算結(jié)果超出了FF或者小于00,最后得到的結(jié)果會(huì)等于FF或者00,如果α的計(jì)算結(jié)果大于1.0或者小于0.0,最后結(jié)果會(huì)等于1.0或者0.0。

@color: #224488 / 2; //#112244
@background-color: #112244 + #111; //#223355

less可以理解色值和單位的之間區(qū)別:

@var: 1px + 5;

這個(gè)變量的最終輸出為6px

轉(zhuǎn)義(escaping)

escaping允許使用任意字符串來作為屬性或者變量的值,任何在~'anything' 或者 ~"anything" 將會(huì)被直接使用除了插值(interpolation)。

.test{
    color: ~"green";
}

編譯為:

.test{
    color: green;
}

函數(shù)

less內(nèi)置了多種函數(shù)用于轉(zhuǎn)換顏色,處理字符串,算術(shù)運(yùn)算等。函數(shù)在函數(shù)手冊(cè)中有詳細(xì)介紹。用法如下:

@base: #f500f5;
@width: 0.5;
.test{
    width: percentage(@width);//50%
    color: saturate(@base, 5%);
}

命名空間和訪問器(namespaces&accessors)

有些時(shí)候,你想要組合你的變量或者mixin,無論是出于組織目的還是只是想實(shí)現(xiàn)一些封裝,你可以很直觀的在less中實(shí)現(xiàn)。

@color: #ff4e56
#bundle{
    .button{
        display: block;
        background-color: @color;
        width: 100px;
        height: 30px;
        border-radius: 5px;
        &:hover{
            background-color: @color - #222;
        }
    }
    .tab{ ... }
    .input{ ... }
}

如果你將.button這個(gè)類加入 #header button中,可以這樣做:

#header{
    color: green;
    #bundle > .button
}

注:變量在某命名空間內(nèi)定義聲明,該變量的作用范圍僅限于該空間中,外部的空間中該變量將無法不可用。因此無法像上面的語法(#namespace > .mixin-name)那樣進(jìn)行,(#namespace > @var)是不行的

作用范圍(scope)

scope在less中與編程語言中的非常相似,變量和mixin會(huì)先在當(dāng)前規(guī)則中尋找,如果無發(fā)現(xiàn),編譯器會(huì)當(dāng)前規(guī)則的上一級(jí)尋找,以此類推。

@var: red;
#page{
    @var:  blue;
    #nav{
        color: @var;//blue
    }
}

變量和mixin不一定要在其使用之前定義聲明,下面例子同上面例子:

@var: red;
#page{
    #nav{
        color: @var;//blue
    }
    @var: blue;
}

注釋

可以使用行注釋或者塊注釋

/
這里是注釋
/
@var: red;
//這里是注釋
@var: blue;

導(dǎo)入(importing)

可以導(dǎo)入.less的文件,所有在該.less的文件中的變量都是可用的。

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

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