一種動態樣式語言:變量,繼承,運算,函數。npm
直接引入less.js 或 npm installless
須要注意的是:&表明 自己。 好比要給a元素加hover,能夠這樣寫:函數
a{ color: #fff; &:hover{ color: red; } }
定義變量:spa
@width:12px;
使用:code
div{ width: @width; }
也能夠多個變量結合使用:blog
@width: 2px; @style:solid; @red:red; @blue:blue; .div1{ border: @width @style @red; } .div2{ border: @width @style @blue; }
須要注意的是:變量的定義是有做用域的。繼承
.div1{ @a:10px; .main{ width: @a; /* 能夠找到 */ } } .div2{ width: @a; /* 錯誤的,找不到 */ }
.classA{ border: 1px solid red; } .clearFix{ *zoom:1; &:after{ content:''; display: block; clear: both; } } .classB{ .classA; .clearFix; /* 清除浮動 */ }
.border(@color){ border: 1px solid @color; } .box1{ .border(red); } .box2{ .border(blue); } .box3{ .border(yellow); }
多參數也是與上面同樣,替換便可。作用域
帶默認值的參數混合:寫了這個參數,可是不是必定要傳值,沒有傳值就使用默認值。rem
.border(@color:red){ border: 1px solid @color; } .box1{ .border(); } .box2{ .border(blue); } .box3{ .border(); }
arguments變量:表明全部參數。不在意變量順序的時候使用.編譯
.border(@width:1px,@style:solid){ border: @argument #333; } .box1{ .border(2px,red); }
.border(top,@width:1px){ border-top: @width solid #333; } .border(right,@width:1px){ border-right: @width solid #333; } // 默認匹配,每個都會帶上 .border(@_,@width:1px){ width: 100px; } .box1{ .border(top); } .box1{ .border(right); } }
round(1.67) //2
ceil(2.4) //3 向上取整
floor(2.6) //2 向下取整
.border(@_,@width:1px){ width: round(1.67)*1px; //四捨五入 2px }
.red{ .button{ background-color: red; } } .box{ .red > .button; }
@import "lib.less"
font:(12/@rem)~'/'(20/rem) '宋體';