Less

Less

  • 同類型:Sass 、styuls

一款比較流行的預(yù)處理CSS,支持變量、混合、函數(shù)、嵌套、循環(huán)等特點(diǎn)
官網(wǎng)
中文網(wǎng)
http://www.w3cplus.com/css/less

概要

為什么要有預(yù)處理CSS

CSS基本上是設(shè)計(jì)師的工具,不是程序員的工具。在程序員的眼里,CSS是很頭痛的事情,它并不像其它程序語(yǔ)言,比如說PHP、Javascript等等,有自己的變量、常量、條件語(yǔ)句以及一些編程語(yǔ)法,只是一行行單純的屬性描述,寫起來相當(dāng)?shù)馁M(fèi)事,而且代碼難易組織和維護(hù)。

很自然的,有人就開始在想,能不能給CSS像其他程序語(yǔ)言一樣,加入一些編程元素,讓CSS能像其他程序語(yǔ)言一樣可以做一些預(yù)定的處理。這樣一來,就有了“CSS預(yù)處器(CSS Preprocessor)”。

什么是預(yù)處理CSS

  • CSS語(yǔ)言的超集,比CSS更豐滿

CSS預(yù)處理器定義了一種新的語(yǔ)言,其基本思想是,用一種專門的編程語(yǔ)言,為CSS增加了一些編程的特性,將CSS作為目標(biāo)生成文件,然后開發(fā)者就只要使用這種語(yǔ)言進(jìn)行編碼工作。通俗的說,CSS預(yù)處理器用一種專門的編程語(yǔ)言,進(jìn)行Web頁(yè)面樣式設(shè)計(jì),然后再編譯成正常的CSS文件,以供項(xiàng)目使用。CSS預(yù)處理器為CSS增加一些編程的特性,無需考慮瀏覽器的兼容性問題,例如你可以在CSS中使用變量、簡(jiǎn)單的邏輯程序、函數(shù)等等在編程語(yǔ)言中的一些基本特性,可以讓你的CSS更加簡(jiǎn)潔、適應(yīng)性更強(qiáng)、可讀性更佳,更易于代碼的維護(hù)等諸多好處。

CSS預(yù)處理器技術(shù)已經(jīng)非常的成熟,而且也涌現(xiàn)出了很多種不同的CSS預(yù)處理器語(yǔ)言,比如說:Sass(SCSS)、LESS、Stylus、Turbine、Swithch CSS、CSS Cacheer、DT CSS等。如此之多的CSS預(yù)處理器,那么“我應(yīng)該選擇哪種CSS預(yù)處理器?”也相應(yīng)成了最近網(wǎng)上的一大熱門話題,在Linkedin、Twitter、CSS-Trick、知呼以及各大技術(shù)論壇上,很多人為此爭(zhēng)論不休。相比過計(jì)我們對(duì)是否應(yīng)該使用CSS預(yù)處理器的話題而言,這已經(jīng)是很大的進(jìn)步了。

到目前為止,在眾多優(yōu)秀的CSS預(yù)處理器語(yǔ)言中就屬Sass、LESS和Stylus最優(yōu)秀,討論的也多,對(duì)比的也多。本文將分別從他們產(chǎn)生的背景、安裝、使用語(yǔ)法、異同等幾個(gè)對(duì)比之處向你介紹這三款CSS預(yù)處理器語(yǔ)言。相信前端開發(fā)工程師會(huì)做出自己的選擇——我要選擇哪款CSS預(yù)處理器。

如何使用預(yù)處理Less

less.js

網(wǎng)頁(yè)運(yùn)行階段解析LESS文件

使用方式:

less compiler

開發(fā)階段編譯LESS文件成為CSS

使用方式:

  • cd less文件所在的目錄
  • lessc xxx.less生成的css在控制臺(tái)輸出
  • lessc xxx.less > xxx.css生成的css放入xxx.css
安裝
  • 安裝Node.js
  • 安裝less
    • 命令行執(zhí)行:npm install -g less
編譯操作

語(yǔ)法

注釋

// 模板注釋,這里的注釋轉(zhuǎn)換成CSS后將會(huì)刪除
/* CSS 注釋語(yǔ)法 轉(zhuǎn)換為CSS后任然保留 */

定義變量

將需要重復(fù)使用或經(jīng)常修改的值定義為變量,需要使用的地方引用

  • less

    @變量名: 變量值;
    @bgColor: #f5f5f5;
    
    body{
      width: @變量名;
      background-color: @bgColor;
    }
    
  • css

    body{
      width: 變量值;
      background-color: #f5f5f5;
    }
    

嵌套

如果你在CSS中經(jīng)常使用子代選擇器,那LESS的嵌套語(yǔ)法使用起來非常Happy

  • less

/*

:直接子代
&:當(dāng)級(jí)元素
*/
.container {
width: @containerWidth;
.row {
height: 100%;
a{
color: #f40;
&:hover{
color: #f50;
}
}
}
div {
width: 100px;
.hello {
background-color: #00f;
}
}
}


- css

```css
.container {
  width: 1024px;
}
.container > .row {
  height: 100%;
}
.container > .row a {
  color: #f40;
}
.container > .row a:hover {
  color: #f50;
}
.container div {
  width: 100px;
}
.container div .hello {
  background-color: #00f;
}

Mixin

/* 定義一個(gè)類 */
.roundedCorners(@radius: 5px) {
  -moz-border-radius: @radius;
  -webkit-border-radius: @radius;
  border-radius: @radius;
}
/* 定義的類應(yīng)用到另個(gè)一個(gè)類中 */
#header {
  .roundedCorners;
}
#footer {
  .roundedCorners(10px);
}

Import

我們可以在開發(fā)階段將樣式放到多個(gè)文件中,最后通過@import 的方式合并

  • less

    // main.less
    @btnColor: red;
    @import url('_buttom.less');
    
    body{
      width: 1024px;
    }
    
    // _buttom.less
    .btn{
      color: @btnColor;
    }
    
  • css

    .btn{
      color: red;
    }
    body{
      width: 1024px;
    }
    

函數(shù)

內(nèi)置函數(shù)
  • lighten:將一個(gè)顏色變亮
    • lighten(#000, 10%); // #1a1a1a
  • darken:將一個(gè)顏色變暗
    • darken(#000, 10%); // #e6e6e6
自定義函數(shù)等講流行框架再說

安裝NodeJS

  • 安裝node-v5.2.0-x64.msi,我的安裝目錄:D:\Program Files\nodejs
  • 配置環(huán)境變量
  • cd D:\Program Files\nodejs
  • 安裝less:npm install -d less
  • 配置環(huán)境變量。我的路徑如下:D:\Program Files\nodejs\node_modules\.bin

測(cè)試源碼:

css/_part.less

/*在被導(dǎo)入的less文件中可以使用導(dǎo)入的less中的變量*/
p{
  line-height: @h;
}

css/main.less

//定義變量
@bgColor:#e23922;
@mainColor:#f0f0f0;
@width:100px;

/*
  >直接子代
  &當(dāng)級(jí)元素
*/
body{
  background-color: @bgColor;
}
.container{
  width: 1000px;
  background-color: #ff0;
  .row{
    height: @width;
    div{
      border-left: 1px solid @mainColor;
      >a{
        color: red;
        &:hover{
          color: green;
        }
      }
    }
  }
}

/*
  定義一個(gè)類
*/
//定義代碼段,()里的內(nèi)容是參數(shù),參數(shù)中:后的內(nèi)容是參數(shù)的默認(rèn)值(沒有傳參數(shù))
.roundedCorner(@radius :5px){
  -webkit-border-radius: @radius;
  -moz-border-radius: @radius;
  -o-border-radius: @radius;
  -ms-border-radius:@radius;
  border-radius: @radius;
}

#header{
  .roundedCorner();
}
#footer{
  .roundedCorner(10px);
}

@h:120px;
@import url("_part.less");

Less使用

  • less執(zhí)行方式一
    使用lessc命令生成.css的代碼,在html中引入css文件
  • 使用less.js
    在html中直接引入.less文件,不過需要引入less.js
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet/less" href="css/main.less">
</head>
<body>
    <script type="text/javascript" src="lib/less/less.min.js"></script>
</body>
</html>

在瀏覽器端生成的代碼如下:


如上圖可見less.js是將less文件生成css文件,插入到header中

如上圖可見瀏覽器將less轉(zhuǎn)為css需要時(shí)間,如上使用21ms,但是less越復(fù)雜使用時(shí)間越長(zhǎng),沒必要讓用戶等待這個(gè)處理時(shí)間,所以一般在項(xiàng)目中,測(cè)試中使用方式二:less.js,實(shí)際上線使用方式一:lessc命令。

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

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

  • 簡(jiǎn)介 CSS(層疊樣式表)是一門歷史悠久的標(biāo)記性語(yǔ)言,同 HTML 一道,被廣泛應(yīng)用于萬(wàn)維網(wǎng)(World Wide...
    老夫的天閱讀 2,032評(píng)論 1 29
  • 先安利我最近看的一部電視劇吧:《雞毛飛上天》,講浙江義烏小商品市場(chǎng)怎么發(fā)展起來的故事,以小積大呀,所以我們的基礎(chǔ)一...
    Iris_mao閱讀 648評(píng)論 0 6
  • CSS 預(yù)處理器技術(shù)已經(jīng)非常的成熟,而且也涌現(xiàn)出了越來越多的 CSS 的預(yù)處理器框架。本文向你介紹使用最為普遍的三...
    Mx勇閱讀 1,448評(píng)論 0 7
  • [目錄] Less為什么會(huì)出現(xiàn)? 學(xué)習(xí)Less的網(wǎng)站 Less的安裝環(huán)境離線的安裝方式在線的安裝方式 less轉(zhuǎn)化...
    頑皮的雪狐七七閱讀 15,729評(píng)論 5 42
  • 變量 注意你的less樣式文件一定要在引入less.js前先引入。 備注:請(qǐng)?jiān)诜?wù)器環(huán)境下使用!本地直接打開可能會(huì)...
    286f50208306閱讀 1,116評(píng)論 0 1

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