3.變量、使用方面的區別
less:
1.變量: 使用@變量名:變量值
2.混合:無參混合,代參混合
3.less的匹配模式,會根據調用時提供的條件只尋找與之匹配的mixins執行,其中@_表示永遠須要執行的部分
4.less中的運算,加減乘除可帶、可不帶單位;顏色運算時,分成綠藍三組進行運算,組內可進位,組間互不干涉
5.包含了傳進來的全部參數:border:@arguments;
6.less中的嵌套保留了html的代碼結構 1)嵌套默認是後代選擇器,若是須要子代選擇器,則在子代前加>2).&表示上一層 &:表示上一層的hover事件
sass:
1.使用$變量名:變量值,若是變量須要須要在字符中嵌套,則需使用#加大括號包裹 :border-#{$left}:10px solid #ccc;
2.會使用單位
3.嵌套:選擇器嵌套 僞類嵌套 屬性嵌套
選擇器嵌套 ul{li{}} 後代 ul{>li{}}子代 &表示上一級 屬性嵌套:屬性名與大括號之間必須有: border:{color:red}
四、混合宏、繼承、佔位符
①混合宏:聲明:@mixin name($param:value){}
調用:@include name(value);
>>>聲明時,能夠有參,能夠無參;可帶默認值,也可不帶;可是,調用時,必須符合聲明規範。同less
>>>優勢;能夠傳參,不會生成同名class;
>>>缺點:會將混合宏中的代碼,copy到對應的選擇器中,產生冗餘代碼!
②繼承:聲明:.class{} 調用:@extend .class;
>>>優勢:繼承的相同代碼,會提取到並集選擇器中,減小冗餘代碼
>>>缺點:沒法進行傳參,會在css中,生成一個同名class
③佔位符:聲明:&class{} 調用:@extend %class;
>>>優勢:繼承相同代碼,會提早到並集選擇器;不會生成同名的class選擇器
>>>缺點:沒法進行傳參
綜上所述:當須要傳遞參數時,用混合宏;當有現成的class時用繼承;當不須要參數,也不須要class時,用佔位符
五、if條件結構:
@if 條件{}
@else{}
六、for循環結構:
@for $i from 1 to 10{} 不包含10;
@for $i from 1 through 10{} 包含10;
七、while循環結構:
$j:1;
@while $j<10{
.while#{$j}{
border:#{$j}px solid red;
}
$j:$j+1;
}
八、each循環遍歷
@each item in a,b,c,d{
//item表示每一項
}
九、函數:
@function func($length){
$length1:$length*5;
@return $length1;
}
調用:func(10px);
十、使用...將傳進來的全部參數,接收到一個變量中
@mixin bordeRadius($param1...){
//使用...將傳進來的全部參數,接收到一個變量中
border-radius:$param1;
-webkit-border-radius:$param1;
}