当前位置:  开发笔记 > 前端 > 正文

为什么必须在Calc()方法中用空格包围+或 - ?

如何解决《为什么必须在Calc()方法中用空格包围+或-?》经验,为你挑选了3个好方法。

最近我开始在CSS中使用calc(...)方法.我很快就知道代码如下:width: calc(100%-2)虽然在-操作符之前和之后添加空格来解决问题并且calc方法将正常运行,但是不起作用.

在做了一些研究之后,我发现有多篇博客文章提到白色空间是必需的,许多人甚至指出了规范(CSS3 8.1.1),其中指出:

此外,+和 - 运算符的两侧都需要空格.(*和/操作符可以在没有空格的情况下使用.)

现在,很明显,规范告诉我们这些运算符必须用白色空间包裹,但为什么呢?我已经在规范中进一步阅读(通过第8.1.2-4节),如果在这些附加部分中解释,我不理解推理.

简单来说,有人可以解释为什么指定它calc(100% - 1)甚至calc(100%/2)是可接受的语法但不是calc(100%-1)吗?



1> BoltClock..:

-字符是CSS标识中允许的字符之一.从这里给出的分辨率来看,似乎他们想要防止因使用-没有空格而引起的语法歧义,尤其是关键字值如min-content(尽管AFAIK关键字值尚未被允许)calc()- 如果我错了,请纠正我.

但并非所有人都同意这一决议.


@RLH:*真正*糟糕的设计是我们的键盘上有一个ASCII ["hyphen-minus"](http://www.fileformat.info/info/unicode/char/2d/index.htm)字符:P

2> sp00m..:

在Mozilla开发者网络解释了它相当不错:

注意:+-运算符必须始终用空格包围.calc(50% -8px)例如,操作数将被解析为百分比,后跟负长度,无效表达式,而操作数calc(50% - 8px)是百分比,后跟减号和长度.更进一步,calc(8px + -50%)将其视为长度,后跟加号和负百分比.

*/运营商不需要的空白,但添加它的一致性是允许的,并建议.



3> Marco Bonell..:

我认为你应该首先考虑CSS如何识别长度.长度定义为可选符号,后跟模块和可选的度量单位(尽管许多属性实际需要它):

 := [][]

因此,例如,有效的CSS长度是:

-3px
100em
+10pc
0
91
5%

定义这样的长度,CSS引擎解析以下内容:

calc(100% -1px);

作为长度后跟另一个长度.在这种情况下,它将100%紧随其后-1px,根本没有意义calc().这也在相关的MDN文档页面中进行了解释.

为了使两个长度相关,你需要使用一个不同的运算符,因此,按照上面的逻辑,你需要使用空格:

calc(100% - 1px);

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有