Less中解决CSS3的calc编译出错问题
Less简介
Less
是一门 CSS
预处理语言,它扩展了CSS
语言,增加了变量、Mixin
、函数等特性,使 CSS
更易维护和扩展。
LESS
将 CSS
赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS
既可以在 客户端 上运行 (支持IE 6+, Webkit, Firefox
),也可以借助Node.js
或者Rhino
在服务端运行。
例子:
@base: #f938ab;
.box-shadow(@style, @c) when (iscolor(@c)) {
-webkit-box-shadow: @style @c;
box-shadow: @style @c;
}
.box-shadow(@style, @alpha: 50%) when (isnumber(@alpha)) {
.box-shadow(@style, rgba(0, 0, 0, @alpha));
}
.box {
color: saturate(@base, 5%);
border-color: lighten(@base, 30%);
div { .box-shadow(0 0 5px, 30%) }
}
输出:
.box {
color: #fe33ac;
border-color: #fdcdea;
}
.box div {
-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
Calc简介
calc()
从字面我们可以把他理解为一个函数function
,它是英文单词calculate
(计算)的缩写,是css3
的一个新增的功能,用来指定元素的长度。你可以使用calc()给元素的border、margin、pading、font-size
和width
等属性设置动态值。为何说是动态值呢?因为我们使用的表达式来得到的值。不过calc()
最大的好处就是用在流体布局上,可以通过calc()
计算得到元素的宽度。
不过使用的时候要注意以下几点:
- 使用
+ - *
和/
四则运算; - 可以使用百分比、
px em rem
等单位; - 可以混合使用各种单位进行计算;
- 表达式中有
+ -
时,其前后必须要有空格,如widht: calc(10%+5px)
这种没有空格的写法是错误的; - 表达式中有
* /
时,其前后可以没有空格,但建议留有空格。
问题描述
当在Less
中使用CSS3
的calc
计算功能时候,这时候却发生错误了,Less
会直接把它当作一个表示式进行编译运算,而不是就是一个直接的calc
表达式交给浏览器去计算。
如下:
width: calc(100% - 120px);
会变成
width: calc(-20%);
解决办法
在网上查找了许久,终于找到了解决办法,那就是使用~ ""
即可。
如下:
width: calc(~"100% - 120px");