是否将“ display:none”元素的宽度或高度设置为零是一个标准?

时间:2019-06-01 09:35:33

标签: javascript html css dom

在Chrome上,“ display:none”元素的offsetWidth或offsetHeight为0。

我想知道这是W3C定义的标准行为,还是仅仅是浏览器的一种方言?还是所有现代浏览器事实上都支持它?

我在网上搜索,发现几乎没有文字可以解决我的问题。

1 个答案:

答案 0 :(得分:2)

是的,这是标准行为。

如果displaynone,则不会创建布局框:

  

请注意,显示为“ none”不会创建不可见的框;它根本不会创建任何盒子。 CSS包括使元素能够在格式结构中生成影响格式但本身不可见的框的机制。有关详细信息,请查阅可见性部分。

     

https://drafts.csswg.org/css2/visuren.html#display-prop

如果没有框,则返回零:

  

offsetWidth属性必须返回运行以下步骤的结果:

     
      
  1. 如果元素没有任何关联的CSS布局框,则返回零并终止此算法。
  2.   
  3. 返回与该元素关联的第一个CSS布局框的边框宽度,而忽略适用于该元素及其祖先的任何变换。
  4.   
     

https://drafts.csswg.org/cssom-view/#dom-htmlelement-offsetwidth