less 快速入門(mén)

一、less 入門(mén)

介紹

  • Less 是一門(mén) CSS 預(yù)處理語(yǔ)言撞蚕,它擴(kuò)展了 CSS 語(yǔ)言润梯,增加了變量Mixin诈豌、q嵌套仆救、函數(shù)抒和、作用域等特性
  • 提高了css代碼可維護(hù)性矫渔、邏輯性、擴(kuò)展性
  • css 是一門(mén)非程序式語(yǔ)言摧莽,沒(méi)有變量庙洼、函數(shù)、作用域等概念

安裝 安裝教程

  • 簡(jiǎn)單,不需安裝其他依

  • 全局安裝 npm install less -g

  • 項(xiàng)目中安裝 npm i less --save-dev

  • 顯示版本

lessc -v
lessc --version

編譯:編譯教程

  • 命令行編譯
  • 編輯器插件編譯
  • 編譯軟件koala
  • 前端自動(dòng)化工具編譯
  • 在客戶端使用less.js(簡(jiǎn)便油够,但推薦用于生產(chǎn)環(huán)境蚁袭,影響性能) ---> 比sass多一種
<link rel="stylesheet/less" type="text/css" href="styles.less" />
<script src="less.js" type="text/javascript"></script>

注意點(diǎn):
1. 在less.js之前引入css樣式表
2. link標(biāo)簽的rel 屬性設(shè)置為 "stylesheet/less"

二、嵌套

  • 父選擇器 &
  • 層層嵌套石咬,便于維護(hù)
  • 解耦:高內(nèi)聚揩悄、低耦合,利于維護(hù)
&:hover
&::before

三鬼悠、變量 variales

定義變量用 @

  • 定義變量删性、屬性值為變量(不插值)
@link-color: #428bca; 
.link {
    color: @link-color;
}

// 被編譯為:
.link {
    color: #428bca;
}

變量插值 @{}

  • 選擇器、屬性名焕窝、屬性值(插值)

  • 選擇器蹬挺、屬性名中、部分片段中:必須使用插值語(yǔ)句

@mySelector: banner;
.@{mySelector} {
  font-weight: bold;
}

// 被編譯為:
.banner {
    font-weight: bold;
}
@property: color;
.widget {
    @{property}: #0ee;
    background-@{property}: #999;
}

// 被編譯為:
.widget {
    color: #0ee;
    background-color: #999;
}
@images: "../img";
body {
  color: #444;
  background: url("@{images}/white-sand.png");
}

// 被編譯為:
body {
  color: #444;
  background: url("../img/white-sand.png");
}

四它掂、作用域

  • LESS 中的作用域跟其他編程語(yǔ)言非常類(lèi)似巴帮,首先會(huì)從本地查找變量或者混合模塊,如果沒(méi)找到的話會(huì)去父級(jí)作用域中查找虐秋,直到找到為止榕茧。

五、混入 mixins

1. 混合集(輸出客给、不輸出)

.btn1 {     // 被輸出
  color: black;
}
#btn2() {   // 不被輸出雪猪,加括號(hào)
  font-size: 12px;
}
.class {
  .btn1();  // 調(diào)用混合集的時(shí)候:括號(hào)可加可不加
  #btn2;
}

// 被編譯為:
.btn1 {
    color: black;
}
.class {
    color: black;
    font-size: 12px;
}

2. 帶選擇器的混合集

.my-hover-mixin() {
    &:hover {
        border: 1px solid red;
    }
}
button {
    .my-hover-mixin();
}

// 被編譯為:
button:hover {
    border: 1px solid red;
}

3. 命名空間混入

#bundle {
    .button () {
        display: block;
        &:hover {
            background-color: white;
        }
    }

    .tab () {
        color: #fff;
    }
}

#header a {
    color: orange;
    #bundle > .button;  // 重點(diǎn)
}

// 被編譯為:
#header a {
    display: block;
}

#header a:hover {
    background-color: #ffffff;
}

4.帶參數(shù)混入(參數(shù)用 @ 定義)

  • 單一參數(shù):
.border-radius(@radius) {
    border-radius: @radius;
}

.box {
    .border-radius(4px);
}

// 被編譯為
.box {
    border-radius: 4px;
}
  • 帶默認(rèn)值的參數(shù)
.border-radius(@radius: 4px) {
    border-radius: @radius;
}

.box {
    .border-radius;
}

// 被編譯為
.box {
    border-radius: 4px;
}
  • 多個(gè)參數(shù)(推薦 逗號(hào) 分號(hào) 隔開(kāi))
.mixin(@color; @padding:2px) {
    color: @color;
    padding: @padding;
}
.selector {
    .mixin(#008000);
}

// 被編譯為:
.selector {
    color: #008000;
    padding: 2px;
}
  • 命名參數(shù)(不用再注意參數(shù)的位置)
.mixin(@color: black; @margin: 10px) {
    color: @color;
    margin: @margin;
}
.class1 {
    .mixin(@margin: 20px; @color: #33acfe);
}

// 被編譯為
.class1 {
    color: #33acfe;
    margin: 20px;
}

六、內(nèi)置函數(shù) 函數(shù)手冊(cè)

列表函數(shù)

  • length(列表); // 返回列表中元素的個(gè)數(shù)
  • extract(列表, index); // 返回列表中指定位置的元素

七起愈、條件語(yǔ)句只恨、循環(huán)語(yǔ)句 when

比較運(yùn)算符的完整列表為: >, >=, =, =<, <

.max (@a) when (@a > 0) { width: @a; }
.mixin (@a) when (default()) { width: 0; }
.max (10px);

// 被編譯為:
.max {
    width: 10px;
}

類(lèi)型檢測(cè)函數(shù)

  • 檢測(cè)參數(shù)類(lèi)型

    • iscolor
    • isnumber
    • isstring
    • iskeyword
    • isurl
  • 檢測(cè)參數(shù)單位

    • ispixel
    • ispercentage
    • isem
    • isunit
.mixin (@a; @b: 0) when (isnumber(@b)) { ... }
.mixin (@a; @b: black) when (iscolor(@b)) { ... }

less中混合調(diào)用自身,即可形成循環(huán)

.loop(@counter) when (@counter > 0) {
    .loop((@counter - 1));    // 遞歸調(diào)用自身
    width: (10px * @counter); // 每次調(diào)用時(shí)產(chǎn)生的樣式代碼
}

div {
    .loop(5); // 調(diào)用循環(huán)
}

// 被編譯為:
div {
    width: 10px;
    width: 20px;
    width: 30px;
    width: 40px;
    width: 50px;
}

八抬虽、導(dǎo)入@import

less 中 @import 文件可在任意位置導(dǎo)入官觅;css中 @import文件必須在其他類(lèi)型規(guī)則之前導(dǎo)入

less 中導(dǎo)入文件的擴(kuò)展名

@import "foo";      // foo.less is imported
@import "foo.less"; // foo.less is imported
@import "foo.php";  // foo.php imported as a less file
@import "foo.css";  // statement left in place, as-is

less 中導(dǎo)入文件選項(xiàng)

  • 語(yǔ)法:@import (keyword) "filename";

    • reference:使用Less文件但不輸出
    • inline:在輸出中包含源文件但不加工它
    • less:將文件作為L(zhǎng)ess文件對(duì)象,無(wú)論是什么文件擴(kuò)展名
    • css:將文件作為CSS文件對(duì)象阐污,無(wú)論是什么文件擴(kuò)展名
    • once:只包含文件一次(默認(rèn)行為)
    • multiple:包含文件多次

九休涤、注釋

  • /**/ 可以使用,會(huì)被編譯
  • // 可以使用笛辟,但不會(huì)被編譯到css中
  • less不認(rèn)識(shí)的內(nèi)容 不會(huì)被編譯
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末功氨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子手幢,更是在濱河造成了極大的恐慌捷凄,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件围来,死亡現(xiàn)場(chǎng)離奇詭異跺涤,居然都是意外死亡匈睁,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)桶错,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)航唆,“玉大人,你說(shuō)我怎么就攤上這事院刁∨锤疲” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵退腥,是天一觀的道長(zhǎng)超营。 經(jīng)常有香客問(wèn)我,道長(zhǎng)阅虫,這世上最難降的妖魔是什么演闭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮颓帝,結(jié)果婚禮上米碰,老公的妹妹穿的比我還像新娘。我一直安慰自己购城,他們只是感情好吕座,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瘪板,像睡著了一般吴趴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侮攀,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天锣枝,我揣著相機(jī)與錄音,去河邊找鬼兰英。 笑死撇叁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畦贸。 我是一名探鬼主播陨闹,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼薄坏!你這毒婦竟也來(lái)了趋厉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤胶坠,失蹤者是張志新(化名)和其女友劉穎君账,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體涵但,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杈绸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年帖蔓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了矮瘟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞳脓。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖澈侠,靈堂內(nèi)的尸體忽然破棺而出劫侧,到底是詐尸還是另有隱情,我是刑警寧澤哨啃,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布烧栋,位于F島的核電站,受9級(jí)特大地震影響拳球,放射性物質(zhì)發(fā)生泄漏审姓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一祝峻、第九天 我趴在偏房一處隱蔽的房頂上張望魔吐。 院中可真熱鬧,春花似錦莱找、人聲如沸酬姆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辞色。三九已至,卻和暖如春浮定,著一層夾襖步出監(jiān)牢的瞬間相满,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工桦卒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雳灵,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓闸盔,卻偏偏與公主長(zhǎng)得像悯辙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子迎吵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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