一种动态样式语言:变量,继承,运算,函数。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) '宋体';