这更像是一个“哲学”论点,但我想知道这里的推荐做法。我没有将它设置为Wiki,以防有“官方”答案。
显然,0px和0em之间没有区别,所以可以简单地指定0并且单位是冗余的(参见CSS difference between 0 and 0em)。一些回答这个问题的人认为应该总是省略单位。
但是,在我看来,省略该单元更容易出错,因为稍后的更改可能会意外地省略该单元。它与文档中其他地方的非零元素也不太一致。
我认为你也应该省略单位。
从程序员的角度来看,0 == null == none == false
,只有0px == 0px
。
这意味着如果你指定0
的边框宽度,那么就不会有边框,但是如果你指定一个0px
边框,那么将创建一个0 px的边框(这就是它背后的想法,实际上0px
给出了完全相同的结果像0
)。
0
使其更容易阅读,因为它很容易与正常的单位价值区分开来。结论:将单位省略为0.它们不是必需的并且令人困惑。
Css规范说0<unit>
可以写成0
。而且我已多次读过,建议省略单位,我不记得在哪里。
所以省略它们。
我说省略单位,这将有助于压缩CSS并提高性能。它并不多,但每一点点都有帮助。
我也喜欢用我的零点放置单位因为......
在当前的浏览器开发人员工具中,您可以使用向上/向下光标键轻松调整值,但如果您指定0
没有单位,那么它将无法工作,因为浏览器不知道您更喜欢哪个单位,并设置1
,2
......没有单位没有意义。
这就是为什么我现在总是在零值上指定单位。任何CSS缩小器都会在缩小时将其更改为0
,因此您甚至不需要关心它。
我总是省略,因为它似乎更容易阅读,零弹出并且很容易与周围的单位值区分开来。
作为这个问题的一个注释:单位0作为长度在calc()
不起作用,你必须改为编写0px
。
注意:由于<number-token>始终被解释为<number> s或<integer> s,因此数学函数不支持“unitless 0”<length> s。即宽度:calc(0 + 5px);是无效的,因为它试图将<number>添加到<length>,即使两者都是宽度:0;和宽度:5px;是有效的。
.a, .b { border: 10px solid; height: 30px; }
.a { width: calc(200px + 0px); border-color: #f00; }
.b { width: calc(200px + 0); border-color: #330; }
<div class="a"></div>
<div class="b"></div>
如果单位省略0取自某些css变量,那么事情会更加错误。