1、less基礎語法css
一、聲明變量:@變量名:變量值;
使用變量:@變量名;web
二、混合(Mixins)
1)無參混合
聲明: .class{}
調用:在選擇器中,使用.class;直接調用less
2)有參無默認值混合:
聲明:.class(@param){}
調用:.class(paramValue);
3)有參有默認值混合:
聲明:.class(@param:10px){}
調用:.class(paramValue);post
>>>若是聲明時,沒有給參數賦默認值,則調用時,必須賦值,不然報錯
>>>無參混合,實際上就是一個普通的class選擇器,會被編譯到CSS文件中;
而有參混合,在編譯時,不會出如今CSS文件中。字體
@color:#ff0000;//聲明變量
@length:100px;//聲明變量
#div1{ width: 100px; height:@length;//使用變量
background-color: @color; } //無參混合
.borderRadius{ border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 10px; } //有參無默認值混合
.borderRadius1(@radius){ border-radius: @radius; -webkit-border-radius: @radius; -moz-border-radius: @radius; } //有參有默認值混合
.borderRadius2(@radius:10px){ border-radius: @radius; -webkit-border-radius: @radius; -moz-border-radius: @radius; } .class(){ width: 10px; height: 10px; .borderRadius2(); }
【變量使用原則】:
屢次頻繁出現的值,後期須要統一修改的值,牽扯到數值運算的值,推薦使用變量;
【less中的變量類型】
在CSS中出現的屬性值,在less中均可以用做變量名
1)數值類:不帶單位的 123 帶單位的 1px
2)字符串:帶引號的 "hahhaha" 不帶引號的 red #fffff
3)顏色類:red #ff0000 RGB(255,0,0)
4)值列表類型:多個值用逗號或空格分隔 10px solid redspa
三、less中的匹配模式
1)聲明:
@pipei(@條件1,參數){}code
@pipei(@條件2,參數){}blog
@pipei(@_,參數){}
2)調用:
@pipei(條件的值,參數的值){}
3)匹配規則
根據調用時輸入的條件值,去尋找與之匹配的混合執行。
@_表示無論匹配成功與否,都會執行的選項繼承
/*匹配模式*/ .pipei(lefts,@width:10px){ margin-left: @width; } .pipei(rights,@width:10px){ margin-right: @width; } .pipei(tops,@width:10px){ margin-top: @width; } .pipei(bottoms,@width:10px){ margin-bottom: @width; } .pipei(@_,@width:10px){//@_表示無論匹配成功與否,都會執行的選項
padding: 10px; } @postion:lefts; .class1{ .pipei(@postion,20px); //調用:@pipei(條件的值,參數的值){}
}
四、@arguments 特殊變量:
在混合中,@arguments表示混合傳入的全部參數。@arguments中的多個參數用空格分隔。
.border(@width,@style,@color){
border:@arguments;//-->border:@width @style @color;
}事件
.argu(@width,@style,@color){ // border:@width @style @color;
border: @arguments; } .class2{ .argu(10px,solid,red); //調用:分別傳入三個參數的值
}
五、LESS中的加減乘除運算:
LESS中的全部變量和數值,能夠進行+ - * /運算。
須要注意的是,當顏色值運算時,紅綠藍分三組運算。組內單獨計算,組間互不干擾。
六、LESS中的嵌套
LESS中容許CSS選擇器按照HTML代碼的結構進行嵌套。
1)less中的嵌套默認是後代選擇器,若是須要子代選擇器,須要在前面加>
2)&符號,表示這個&所在的上一層選擇器。好比上述&,表示 section ul:hover
/* * less中的嵌套 */ #section{ width: 800px; height: 200px; background-color: #ccc; >p{//>表示子代選擇器
color: red; font-weight: bold;//加粗
} ul{ padding: 0; list-style: none; >li{ float: left; width: 100px; height: 50px; background-color: yellow; text-align: center; &:hover{//&表示上一層選擇器(#section ul li:hover)
background-color: green; } } } }
2、sacc基礎語法
一、scss中的變量
1)聲明變量:$變量名:變量值;
SCSS中,容許將變量嵌套在字符串中,可是變量必須使用#{}包裹
eg:border-#{$left}:10px solid red;
$width:100px;//scss中的聲明變量
$position:left; #div1{ width: $width; height: $width/10;
background-color: red; border-#{$position}:10px solid yellow; }
二、SCSS中的運算,會將單位進行運算。使用時需注意最終的單位是否正確。
eg:10px * 10px=100 px*px;
三、SCSS中的嵌套:選擇器嵌套、屬性嵌套、僞類嵌套
1)選擇器嵌套ul{ li{} }
嵌套默認表示後代選擇器,若是須要子代選擇器,能夠在選擇器前面加>
能夠在選擇器的大括號中,使用&表示上一層的選擇器。
2)僞類嵌套: li{ $:hover}
在選擇器的{}中,使用&配合僞類事件,能夠表示當前選擇器的僞類
3)屬性嵌套:font:{size:18px} -->font-size:18px;
對於屬性名有-分割爲多段的屬性,可使用屬性嵌套。屬性名的前半部分必須緊跟:,才能
用{}包裹屬性的後半部分。
section{ background-color: #CCCCCC; p{ color: red; } ul{ padding: 0; li{ list-style: none; //$=="section ul li"
font:{ size: 16px; weight:bold; family:"微軟雅黑"; style:"italic"//字體爲斜體
} } } }
四、混合宏、繼承、佔位符
1)混合宏:聲明@mixin聲明混合宏,在其餘選擇器中使用@include調用混合宏
@minxin hunhe{} .class{@include hunhe}
@minxin hunhe(@param){} .class{@include hunhe(value)}
@minxin hunhe(@param:value){} .class{@include hunhe()}
//繼承
.class1{ color:red; } .class{ @extend .class1; background-color: yellow; } //混合宏
@mixin hunhe($color:red){ color: $color; } .class3{ @include hunhe(green); background-color: yellow; } .class4{ @include hunhe; background-color: blue; } //佔位符
%class1{ color: red; } .class4{ @extend %class1; background-color: yellow; } .class5{ @extend %class1; background-color: green; }
1)混合宏:聲明時,能夠有參數,也能夠沒有參數。參數能夠有默認值,也能夠沒有默認值。
可是調用時,必須符合聲明時的要求。與LESS中的混合相同。
>>>優勢:1)能夠傳參
2)不會產生同名class
>>>缺點:調用時,會把混合宏中的全部代碼copy到選擇器中,產生大量重複代碼
2)繼承:聲明一個普通的class,在其餘選擇器中使用@extend 繼承這個class
.class1{} .class1{ @extend .class1;}
>>>優勢:將相同代碼提取到並集選擇其中,減小冗餘代碼;
>>>缺點:1)不能傳參
2)會生出一個多於的class
3)佔位符:使用%聲明佔位符,在其餘選擇器中使用@extend繼承佔位符;
%class1{} .class2{@extend %class1;}
>>>優勢:1)將相同代碼提取到並集選擇其中,減小冗餘代碼;
2)不會生出一個多於的class。
>>>缺點:不能傳參
五、if條件結構
條件結構須要寫在選擇器裏面,條件結構的大括號直接包裹樣式屬性。
@if 條件{}
@else{}
//scss中的條件語句
.class6{ width: 100px; height: 100px; @if 1>2{ background-color: yellow;//設置背景色
}@else{ background-color: green; } }
六、for循壞:
@for $i from 1 to 10{} //不包含10
@for $i from 1 through 10{} //包含10
//for循壞 @for $i 1 through 10{ .border-#{$i}{ border: #{$i}px solid red;//設置外邊框 } }
七、while循壞:
$i:@extend;
@while $i<10{
$i:$i+1;
}
//while循壞
$i:0; @while $i<10{ .while-#{$i}{ border: #{$i}px solid red; } $i:$i+1; }
八、each 循壞遍歷
@each $item in a,b,c,d{
//$item表示a,b,c,d的每一項
}
//each 循壞遍歷
$i:0; @each $item in c1,c2,c3,c4{ $i:$i+1; .#{$item}{ border: #{$i}px solid red; } }