受这个问题的启发,我发现了这个有趣的现象。
由于负宽度是非法的,因此应该被忽略,我希望样式属性像width:-200px;
和width:calc(0% - 200px);
没有效果。事实上,对于第一个它没有。然而,第二个并没有被忽略:而是使用 0 的宽度。
看这个例子:
div {border:1px solid; background:lime;}
#badwidth {width:-200px;}
#badcalc {width:calc(0% - 200px);}
Div with bad width:
<div id="badwidth"> </div>
Div with bad calc:
<div id="badcalc"> </div>
如果 width 属性被忽略,则 div 将是其全宽(如顶部)。但是,它被折叠为 0(见左边的黑线;那是边界)。
作为参考,这里有一些其他的 div,以证明 1) 其calc(0% - 200px)
本身不是错误,以及 2) 它们工作正常并且第一个片段是异常的。
div {border:1px solid; background:lime;}
#calc {margin-right:calc(0% - 200px);}
Plain div:
<div> </div>
With calc(0% - 200px) in a place where it's OK:
<div id="calc"> </div>
那么,为什么正常宽度和计算宽度的行为不同呢?
如果它只是一个浏览器,我会称之为错误。但他们都以同样的方式对待这个!所以一定有我忽略的东西。什么?