Less的基本用法

1. 变量(Variables)

1
2
3
4
5
//less
@nice-blue: #5B83AD;
.container {
color: @nice-blue;
}
1
2
3
4
//生成的css
.container {
color: #5B83AD;
}

2. 混合(Mixins)

 混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性。

1
2
3
4
5
6
7
8
//less
.bordered {
border: solid 2px black;
}
.container {
color: @nice-blue;
.bordered;
}
1
2
3
4
5
//生成的css
.container {
color: @nice-blue;
border: solid 2px black;
}

3. 嵌套(Nesting)

 在一个选择器中嵌套另一个选择器来实现继承。

1
2
3
4
5
6
7
//less
.container{
color: #5B83AD;
.logo{
color: red;
}
}
1
2
3
4
5
6
7
//生成的css
.container{
color:#5B83AD;
}
.container .logo{
color: red;
}

&符号

 表示当前的选择器,写串联选择器,而不是写后代选择器,就可以用到&了.
 这点对伪类尤其有用如:hover 和 :focus.

1
2
3
4
5
6
7
//less
.container{
color:#5B83AD;
&:hover{
color:red;
}
}

1
2
3
4
5
6
7
//生成的css
.container{
color:#5B83AD;
}
.container:hover{
color:red;
}

4. 运算(Operations)

 运算提供了加,减,乘,除操作;任何数字、颜色或者变量都可以参与运算.

1
2
3
4
5
6
7
//less
@the-border: 1px;
@base-color: #666;
.container{
color: @base-colo * 2;
solid @the-border * 2 red;
}
1
2
3
4
5
//生成的css
.container{
color: #333;
border: solid 2px red;
}

less解析calc()问题

问题描述:

 在less中 calc(100% - 30px) 等带单位混合运算会被less解析忽略单位,全部按照百分比计算,
此例中的计算被less编译成calc(70%)

1
2
3
.container{
width: calc(100% - 30px)
}
1
2
3
4
//less解析成
.container{
width: calc(70%);
}
原因分析:

 less的计算方式跟calc方法有重叠,两者在一起有冲突

解决方案:

 把calc()里面的表达式加上~”“包起来。

1
2
3
.container{
width : calc(~"100% - 30px");
}
1
2
3
4
//解析成
.container{
width : calc(100% - 30px);
}

 进行数值和变量之间的运算可以这样设置:

1
2
3
4
@var = 50px;
.container{
width: calc(~"100% - @{var}")
}
结论:
  • less中 “~” 符号后面双引号里面的内容会被less编译忽略,而直接输出为css代码
  • less中@和{}配合可以在字符串里面使用变量,很像es6里面的模板字符串 `${}`

作者: Jessy Hong