Less简介

Less是一门 CSS 预处理语言,它扩展了CSS 语言,增加了变量、Mixin、函数等特性,使 CSS 更易维护和扩展。
LESSCSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. 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-sizewidth等属性设置动态值。为何说是动态值呢?因为我们使用的表达式来得到的值。不过calc()最大的好处就是用在流体布局上,可以通过calc()计算得到元素的宽度。
不过使用的时候要注意以下几点:

  • 使用+ - */四则运算;
  • 可以使用百分比、px em rem等单位;
  • 可以混合使用各种单位进行计算;
  • 表达式中有+ -时,其前后必须要有空格,如widht: calc(10%+5px)这种没有空格的写法是错误的;
  • 表达式中有* /时,其前后可以没有空格,但建议留有空格。

问题描述

当在Less中使用CSS3calc计算功能时候,这时候却发生错误了,Less会直接把它当作一个表示式进行编译运算,而不是就是一个直接的calc表达式交给浏览器去计算。
如下:

width: calc(100% - 120px);

会变成

width: calc(-20%);

解决办法

在网上查找了许久,终于找到了解决办法,那就是使用~ ""即可。
如下:

width: calc(~"100% - 120px");