一、認識lesscss
二、使用lesshtml
三、變量( variables )node
四、混合 ( mixins ) css3
五、嵌套規則 ( nested-rules ) 編程
六、運算(operations)瀏覽器
七、函數(functions)app
八、命名空間less
九、做用域koa
十、引入(importing)編程語言
十一、關鍵字( important )
十二、條件表達式
1三、循環(loop)
1四、合併屬性
1五、函數庫(function)
初見less |
|
正確使用less |
|
變量 |
|
混合 |
|
嵌套規則
|
什麼是嵌套規則 模仿html結構,讓css代碼更加簡潔明瞭清晰。 header{ width: 960px; h1{ font-size: 18px; color: green; } .logo{ width: 300px; height: 150px; background: darkred; &:hover{ background: forestgreen; } } } & 說明:表示當前選擇器的全部父選擇器。 & 插入到選擇器以後,就會將當前選擇器插入到父選擇器以前。 .a{ .b{ .c&{ color: 123; } } } 編譯後 .c .a .b{ color: 123; } 組合生成全部可能的選擇器列表 p, a, li { border-top: 2px dotted #366; & & { border-top: 0; } } 編譯後 p p, p a, p li, a p, a a, a li, li p, li a, li li{ border-top: 0; } |
運算 |
運算說明(運算符與值之間必須以空格分開,涉及優先級時以「( )
」
優先)
任何數值、顏色和變量均可以進行運算;
less會自動推斷數值的單位,全部沒必要全部數值都加上單位。
.wp{
margin: 0 auto;
background: forestgreen;
width: 450px + 450;
height: 400 + 400px;
}
//涉及到優先級,使用()區分優先級
.wp{
margin: 0 auto;
width: (550 - 50)*2 + 24px;
height: 400 + 400px;
background:#ff0000 - 55; //#000021 c8c8c8
}
//rgb模式他的值是 0~255 ,當你的值超過255 ,那麼就會以255進行相加操做
|
函數
|
Less提供了許多用於轉換顏色,處理字符串和進行算術運算的函數。 .bgcolor{ background :rgb(0,133,0) ; z-index: blue(#050506); } 編譯後 .bgcolor{ background :#008500; z-index: 6; } |
命名空間
|
什麼是命名空間
在less中,咱們須要將一些混合組合在一塊兒,能夠經過嵌套多層id或者class實現。
#bgcolor(){
background: #ffffff;
.a{
color: #888888;
&:hover{
color: #ff6600;
}
.b{
background: #ff0000;
}
}
}
.bgcolor1{
background: #fdfee0;
#bgcolor>.a;
}
注意:">"能夠省略不寫
|
做用域
|
什麼是做用域
less中的做用域與編程語言中的做用域概念很是類似,首先會在局部查找變量和混合。若是沒找到,編譯器就會在父做用域中查找,依次類推。
@clolor:#ffffff;
.bgcolor{
width: 50px;
a{
color: @clolor; //#ff0000
}
}
@clolor:#ff0000;
|
引入 |
什麼是引入
你能夠引入一個或多個.less文件,而後這個文件中的全部變量均可以在當前的less項目中使用!
@import "main.less";
@import (reference) "main.less"; //引用LESS文件,可是不輸出
@import (inline) "main.less"; //引用LESS文件,可是不進行操做
@import (once) "main.less"; //引用LESS文件,可是不進行操做
@import (less) "index.css"; //不管是什麼格式的文件,都把他做爲LESS文件操做
@import (css) "main.less"; //不管是什麼格式的文件,都把他做爲CSS文件操做
@import (multiple) "main.less"; //multiple,容許引入屢次相同文件名的文件
@import (multiple) "main.less"; //multiple,容許引入屢次相同文件名的文件
@import (multiple) "main.less"; //multiple,容許引入屢次相同文件名的文件
.centen{
width:@wp;
.color;
}
注意:引用.css文件,會被原樣輸出到編譯文件中!
|
關鍵字
|
什麼是 !important關鍵字
在調用的混合集後面追加 !important 關鍵字,可使混合集裏面的全部屬性都繼承!important。
.foo (@bg: #f5f5f5, @color: #900) {
background: @bg;
color: @color;
font-size: 16px;
font-weight: 900;
}
.unimportant {
.foo();
}
.important {
.foo() !important;
}
注意:會提高全部樣式的權重,儘可能少用,不推薦使用。
|
條件表達式
|
>,>=,=,<=,<,true
.mixin (@a) when (lightness(@a) >= 50%) { //255/2=127.5
background-color: black;
}
.mixin (@a) when (lightness(@a) < 50%) {
background-color: white;
}
.mixin (@a) {
color: @a;
}
.class1 { .mixin(#7e7e7e) } //221 > 127.5 >50% background-color: black; 7e7e7e = 126
.class2 { .mixin(#808080) } //85 <127.5 <50% background-color: white; 808080 = 128
類型檢查函數
能夠基於值的類型來匹配函數
iscolor
isnumber
isstring
iskeyword
isurl
.mixin (@a) when (iscolor(@a)) {
background-color: black;
}
.mixin (@a) when (isnumber(@a) ) {
background-color: white;
shuzi:shuzi;
}
.mixin (@a) {
color: @a;
}
.class1 { .mixin(#7e7e7e) } //background-color: black;
.class2 { .mixin(123) } //background-color: white;
單位檢查函數
能夠基於值的類型來匹配函數
ispixel
ispercentage
isem
isunit
.mixin (@a) when (ispixel(@a)) {
background-color: black;
}
.mixin (@a) when (ispercentage(@a) ) {
background-color: white;
}
.mixin (@a) {
width: @a;
}
.class1 { .mixin(960px) } //background-color: black; width:960px
.class2 { .mixin(95%) } //background-color: white;width:95%
|
循環
|
在less中,混合能夠調用它自身,這樣,當一個混合遞歸調用本身,再結合Guard表達式和模式匹配這兩個特性,就能夠寫出循環結構.
.loop(@counter) when (@counter > 0) {
.loop((@counter - 1)); // 遞歸調用自身 4 3 2 1 0
width: (10px * @counter); // 每次調用時產生的樣式代碼30px 20px 10px
}
div {
.loop(3); // 調用循環
}
.loop(@counter) when (@counter > 0) {
h@{counter}{
padding: (10px * @counter);
}// 每次調用時產生的樣式代碼
.loop((@counter - 1)); // 遞歸調用自身
}
div {
.loop(6); // 調用循環
}
|
合併屬性
|
"+"逗號分隔所合併的屬性值
在須要合併的屬性的:的前面加上+就能夠完成合並,合併以,分割屬性
//+ 合併之後,以逗號分割屬性值
.mixin() {
box-shadow+: inset 0 0 10px #555 ;
}
.myclass {
.mixin();
box-shadow+: 0 0 20px black;
}
//+_ 合併之後,以空格分割屬性值
.a(){
background+:#f60;
background+_:url("/sss.jod") ;
background+:no-repeat;
background+_:center;
}
.myclass {
.a()
}
//background+_:#f60 url("/sss.jod");
注意:當前使用的是哪一個,就以這個想加。
|