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

一、什么是less

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

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

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

二、編譯工具

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

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

基本使用:

首先新建目錄

 --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目錄下就會出現(xiàn)main.css文件,這是編譯后的文件,我們可以直接使用。

三、less語法

1、注釋

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

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

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

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

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

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

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

由于我們應(yīng)該一般編寫和維護(hù)less文件,所以我們一般采用第二種注釋,無需將注釋編譯進(jìn)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寫法與常規(guī)的css寫法進(jìn)行混合書寫。

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中就可以實(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è)置一個默認(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)該被包裹在括號中。

//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學(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中如果我們需要對這一html結(jié)構(gòu)的樣式進(jìn)行渲染,就會使用#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參數(shù)

有時候我們不想單個操作參數(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、避免編譯

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

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

//css
width: calc(100%-35);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容