Less is More ,Than CSS-少即是多,比CSS
什么是Less?
LESS的注释:
/* 内容是被编译的,保留进.CSS文件中 */
// 内容不被编译,不出现在.CSS文件中
//声明变量,以@开头,如:@变量名:值;
@w: 500px;
@h: 300px;
.box {
width: @w;
height: @h;
}
不带参数(引用时可不带()括号):
声明, .bd_radius{};引用,.box{ .bd_radius }
带参数(引用时必须带()括号):
① 声明,.bd_radius(@radius){ border-radius: @radius; }
引用,.box{ .bd_radius(5px); }——必须带参数
默认带值
.bd_radius(@radius:10px){ border-radius: @radius; }
兼容ie低版本(border-style: dashed)css三角
.triangle(top, @w:5px, @c:#ccc){...}
.triangle(bottom, @w:5px, @c:#ccc){...}
.triangle(left, @w:5px, @c:#ccc){...}
.triangle(right, @w:5px, @c:#ccc) {
border-width: @w;
border-color: transparent transparent transparent @c;
border-style: dashed dashed dashed solid;
}
//@_ 变量,无论第一个传的参数是什么,都会匹配这个方法
.triangle(@_, @w:5px, @c:#ccc) {
width: 0,
height: 0,
overflow: hidden;
}
引用:
.sanjiao { .triangle(right, 100px); }
编译后css:
.sanjiao {
width: 0,
height: 0,
overflow: hidden;
border-width: 100px;
border-color: transparent transparent transparent #ccc;
border-style: dashed dashed dashed solid;
}
可以进行加减乘除运算,只要有一个带像素的即可, 符号两边需要空格
Less中的运算
@test_01:300px;
.box_02{
width:@test_01 + 20;
height: (@test_01 - 200) * 5;
background:#ccc - 10;
}
Less嵌套:CSS中选择器的另一种变形,通过CSS选择器的相互嵌套完成到CSS层次选择器的转换。其中 & 代表它的上一层选择器,适用场景,伪类。
嵌套越多,匹配次数越多,影响加载
& 代表上一层选择器
.list {
li { ... }
a {
color: blue;
&:hover { color: red; }
}
span { ... }
}
终究还是变量,顾名思义,代表多个参数,适用场景,同一个CSS样式属性对应多个属性值,例如border:1px solid pink;如果属性值以参数方式传递,就可以使用@arguments代替对应参数。如何引用?和以往一样,传参时要对应传参,中间可以用",“或者”;"隔开,如果少传,则按顺序匹配。
@arguments 代表所有传递进来的参数
.border (@w:1px, @s: solid, @c: red) {
border: @arguments;
}
引用:
.test_border {
.border(20px);
}
编译后css:
.test_border {
border: 20px solid red;
}
##避免编译、!important以及总结
1 避免编译