CSS——Sass和Less的特點和比較


Sass和Less
    Sass和Less都屬於CSS預處理器,CSS預處理器定義了一種新的語言,其基本思想是,用一種專門的編程語言,為CSS增加了一種編程的特性,如:變量、語句、函數、繼承等概念。將CSS作為目標生成文件,然后開發者就只要使用這種語言進行CSS的編碼工作。
  Sass官網地址:http://sass-lang.com/
  Less官網地址:http://lesscss.org/
語法:
  注釋:

//單行注釋不會被編譯出來
/*
  多行注釋,也就是CSS的注釋方式,可以編譯出來
*/

  變量:
    Less   @variable_name
    Sass   $variable_name
  插值:

    Less

@variable_name : margin;
@{variable_name} : auto;

    Sass 

$variable_name : margin;
#{$variable_name} : auto;

  作用域
    Less   變量查找遵循就近原則。
     Sass   作用域是有順序的
  選擇器嵌套

ul{
    li{
        div{margin:10px;}
        p{margin:20px}
    }
}       

  偽類嵌套

ul{
    li{
        div{margin:10px;}
    }
    &:hover{
        background:red;
    }
}            

  屬性嵌套(僅Sass有,Less沒有)

ul{
    &:hover{
        background:red;
        font : {
            size:10px;
            weight:bold;
        }
    }
}    

  運算、單位、轉義、顏色
    Less:
      單位:當兩個數值相加時,若單位不同,以第一個數值的單位為准
      轉義:~"20px / 1.5"
      顏色:顏色的數值 * 2 = 數值二倍的顏色

@num : 100px;
.box1{
    width : @num * 3;
    height : @num + 2em;
    margin : 2em + @num;
    pading : ~"20px / 1.5";
    color : #102302 * 2;
}

    Sass:
    單位:Sass中比較嚴格,單位不同,不能進行運算
    運算:默認 / 是進行分割操作;若想運算需加括號:(20px / 1.5)
    顏色:同樣可以計算

$num : 100px;
.box2{
    width : $num * 3;
    margin : 20px / 1.5;
    pading : (20px / 1.5);
    color : #102302 * 2;
}

  函數
    通用:
      round() 四舍五入取整
      percentage() 轉換成百分比的形式
      ...
    Less特有:
      sqrt() 開方
      ...
    Sass特有:
      random() 產生隨機數
      ...
      還可自定義函數:

@function sum($n,$m){
    @return $n + $m;
}
fontsize : sum(4px,5px);

  混入(把不同的CSS組合到一起)
    Less:

/*既渲染又混入*/
.show{
    display : 'block';
}
/*僅混入,()可以表示僅混入,也可以進行傳參*/
.hide(){
    display : 'none';
}
.box3{
    fontsize : 16px;
    .show;
    .hide();
}

    Sass:

/*Sass僅混入,加()也可傳參*/
@mixin show{
    display : block;
}
.box4{
    width : 100px;
    @include show;
}

  命名空間(僅Less有)

#nm(){
    .show{display : inline-block; }
}
.box5{
    #num.show;
}

  繼承
    Less:

.line{
    display : inline;
}
.box6{
    &:extend(.line);
}
.box7{
    &:extend(.line);
}

    Sass:

.line{
    display : inline;
}
.box7{
    @extend .line;
}
.box8{
    @extend .line;
}

/*line僅占位,不渲染*/
%line{
    display : inline;
}
.box7{
    @extend %line;
}
.box8{
    @extend %line;
}

  合並(多個值合並到一齊)
    Less:

.box9{
    /*
        合並用','隔開
    */
    background+ : url(a.png);
    background+ : url(b.png);
    /*
        合並用空格隔開
    */
    tranform+_ : scale(2);
    tranform+_ : rotate(30deg);
}

    Sass:

$background : (
    a : url(a.png),
    b : url(b.png)
);
$tranform : (
    a : scale(2),
    b : rotate(30deg)
);
.box9{
    background : map-values($background);
    transform : zip(map-values($tranform)...);
    /*
        zip()把逗號去掉變成空格
    */
}    

  媒體查詢

.box10{
    @media all and (min-width : 768px){
        width : 600px; 
    }
}

  條件
    Less:

@count : 5;
.get(@cn) when (@cn > 4){
    width : 100px + @cn;
}
.get(@cn) when (@cn < 4 ){
    width : 10px + @cn;
}
.box11{
    .get(@count);
}

    Sass:

$count : 5;
.box11{
    @if($count >4){
        width : 100px + @count;
    }
    @else{
        width : 10px + @count;
    }
}

  循環
    Less:

@count2 : 0;
.get2(@cn) when (@cn < 3){
    .get((@cn+1));
    .box-@{cn}{
        width : 100px + @cn;
    }
}
.get2(@count2);
    

    Sass:

@for $i from 0 through 2{
    .box-#{$i}{
        width : 100px + $i;
    }
}

  導入

@import './xxx.scss'
@import './xxx.less'

  ...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM