使用CSS3 calc进行不太积极的编译


336

我正在使用的Less编译器(OrangeBitsdotless 1.3.0.5)正在积极地进行翻译

body { width: calc(100% - 250px - 1.5em); }

进入

body { width: calc(-151.5%); }

这显然是不希望的。我想知道是否有一种方法可以通知Less编译器在编译过程中实质上忽略该属性。我搜索了Less文档和两个编译器的文档,但找不到任何东西。

更少或更少的编译器是否支持此功能?

如果没有,是否有CSS扩展器呢?


9
您确定不希望编译器的攻击性降低吗?
fiatjaf

我也很确定,希望编译器更具攻击性!(之前的评论中的双重否定使我感到困惑;))(所以我也对下面的好功能投了赞成票)
Andreas Dietrich 2015年

Answers:


530

calc由于,默认情况下,Less不再计算内部表达式v3.00


原始答案(Less v1.x...2.x):

做这个:

body { width: calc(~"100% - 250px - 1.5em"); }

在Less 1.4.0中,我们将提供一个strictMaths选项,要求所有Less计算都放在方括号内,因此calc“开箱即用”即可使用。这是一个重大突破,因此是一个选择。1.4.0的早期测试版默认情况下启用此选项。发行版本默认情况下将其关闭。


2
请注意,如果您较少使用twitter的凹槽进行编译,它将忽略此转义。至少在撰写此评论时。
Attila Fulop 2012年

1
我只是calc(100% - 50px)在less.css 1.4.0中尝试过,结果是calc(50%)。很棒的~"..."技巧仍然有效,但是我对“开箱即用”的声明感到困惑,这使我认为上面的方法会起作用。卢克,calcLess 1.4.0 如何支持更改?谢谢!
Brian M. Hunt

2
问题是,为什么less.js首先尝试进行计算?由于它无法计算出合理的答案,因此应该为“ 100%-250px”抛出错误。
mpen

72
对于将来的读者,您也可以只跳过运算符,从而也可以使用变量。示例:calc(@somePercent ~"-" @someLength)
2014年

10
为什么要减少错误计算或引发错误的原因,为什么它不能意识到用户正在尝试做什么而又不理会它呢?显然,百分比和像素值不能同时计算。
dfmiller '16

37

calc的一个非常常见的用例是采用100%的宽度并在元素周围增加一些边距。

一个人可以这样做:

@someMarginVariable = 15px;

margin: @someMarginVariable;
width: calc(~"100% - "@someMarginVariable*2);
width: -moz-calc(~"100% - "@someMarginVariable*2);
width: -webkit-calc(~"100% - "@someMarginVariable*2);


28

有几种转义选项,结果相同:

body { width: ~"calc(100% - 250px - 1.5em)"; }
body { width: calc(~"100% - 250px - 1.5em"); }
body { width: calc(100% ~"-" 250px ~"-" 1.5em); }

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.