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

本人作為一名今年剛畢業(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)換或者無(wú)意義時(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)換,在大部分的情況下都是無(wú)意義的采呐,比如一個(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,無(wú)論是出于組織目的還是只是想實(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)定義聲明吞滞,該變量的作用范圍僅限于該空間中佑菩,外部的空間中該變量將無(wú)法不可用。因此無(wú)法像上面的語(yǔ)法(#namespace > .mixin-name)那樣進(jìn)行,(#namespace > @var)是不行的

作用范圍(scope)

scope在less中與編程語(yǔ)言中的非常相似裁赠,變量和mixin會(huì)先在當(dāng)前規(guī)則中尋找殿漠,如果無(wú)發(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)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市帘营,隨后出現(xiàn)的幾起案子票渠,更是在濱河造成了極大的恐慌,老刑警劉巖芬迄,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件问顷,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡禀梳,警方通過查閱死者的電腦和手機(jī)杜窄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來算途,“玉大人塞耕,你說我怎么就攤上這事〗妓遥” “怎么了荷科?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)纱注。 經(jīng)常有香客問我畏浆,道長(zhǎng),這世上最難降的妖魔是什么狞贱? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任刻获,我火速辦了婚禮,結(jié)果婚禮上瞎嬉,老公的妹妹穿的比我還像新娘蝎毡。我一直安慰自己厚柳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布沐兵。 她就那樣靜靜地躺著别垮,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扎谎。 梳的紋絲不亂的頭發(fā)上碳想,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音毁靶,去河邊找鬼胧奔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛预吆,可吹牛的內(nèi)容都是我干的龙填。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼拐叉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼岩遗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起巷嚣,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤喘先,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后廷粒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡红且,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年坝茎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片暇番。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嗤放,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出壁酬,到底是詐尸還是另有隱情次酌,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布舆乔,位于F島的核電站岳服,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏希俩。R本人自食惡果不足惜吊宋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颜武。 院中可真熱鬧璃搜,春花似錦拖吼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至唾糯,卻和暖如春籍铁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背趾断。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工拒名, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芋酌。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓增显,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親脐帝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子同云,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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