现在我正在尝试在我的LESS代码中使用CSS3来实现这个效果:
width: calc(100% - 200px);
然而,当LESS编译时,它输出的结果是这样的:
width: calc(-100%);
有没有办法告诉LESS不要以那种方式编译它并正常输出?
width: ~"calc(100% - 200px)";
此外,如果您需要将Less数学与转义字符串混合使用:
width: calc(~"100% - 15rem +" (10px+5px) ~"+ 2em");
编译为:
width: calc(100% - 15rem + 15px + 2em);
~"value"
语法已被 e("value")
函数替换。请参见此处:http://lesscss.org/functions/#string-functions-e - chharveye()
文档中的警告。~''
语法似乎是较新的。 - chharveywidth~: calc(100% - 200px);
等同于:
width: ~"calc(100% - 200px)";
- Matthew Deanwidth: calc(100% - 200px);
如果启用了严格数学选项,将按预期工作。
但是,请注意,严格数学是全局应用的,不仅适用于 calc()
内部。也就是说,如果你有:
font-size: 12px + 2px;
font-size: 12px + 2px
,显然这是无效的CSS。您需要用括号(以前不必要)包裹所有应由Less处理的数学运算:font-size: (12px + 2px);
在开始一个新项目时,考虑使用Strict Math是一个不错的选择,否则你可能需要重写代码库的很大一部分。对于最常见的用例,other answer中描述的转义字符串方法更加合适。
less({strictMath: true})
。 - Simon Epskamp这是一个跨浏览器的 less mixin,可用于在任何属性中使用 CSS 的calc
:
.calc(@prop; @val) {
@{prop}: calc(~'@{val}');
@{prop}: -moz-calc(~'@{val}');
@{prop}: -webkit-calc(~'@{val}');
@{prop}: -o-calc(~'@{val}');
}
使用示例:
.calc(width; "100% - 200px");
以及生成的CSS代码:
width: calc(100% - 200px);
width: -moz-calc(100% - 200px);
width: -webkit-calc(100% - 200px);
width: -o-calc(100% - 200px);
这个示例的 CodePen:http://codepen.io/patrickberkeley/pen/zobdp
ParseError: 第2行语法错误
- Tom Roggerocalc
,而是任何其他属性也可以使用。 - zeh带有变量的转义字符串示例:
@some-variable-height: 10px;
...
div {
height: ~"calc(100vh - "@some-variable-height~")";
}
编译为
div {
height: calc(100vh - 10px );
}
@someMarginVariable: 15px;
margin: @someMarginVariable;
width: calc(~"100% - "@someMarginVariable*2);
width: -moz-calc(~"100% - "@someMarginVariable*2);
width: -webkit-calc(~"100% - "@someMarginVariable*2);
width: -o-calc(~"100% - "@someMarginVariable*2);
.fullWidthMinusMarginPaddingMixin(@marginSize,@paddingSize) {
@minusValue: (@marginSize+@paddingSize)*2;
padding: @paddingSize;
margin: @marginSize;
width: calc(~"100% - "@minusValue);
width: -moz-calc(~"100% - "@minusValue);
width: -webkit-calc(~"100% - "@minusValue);
width: -o-calc(~"100% - "@minusValue);
}
:P
- Fabrício Mattémath
设置在calc()
中折叠这些计算。 - Matthew Dean