我最近接手的一个项目是导航菜单显示不正确。我将问题缩小到 chrome 如何计算<a>
包含 child的 parent 的 offsetWidth <p>
。在计算父级的 offsetWidth 时,所有其他浏览器都会考虑子级,但 chrome 会给出 0 的宽度。我的解决方案是将外部标记设置为display:block
.
这个小提琴演示了这个问题。
我想知道为什么会这样?这是由于将 a 放置在<p>
内部<a>
吗?
我最近接手的一个项目是导航菜单显示不正确。我将问题缩小到 chrome 如何计算<a>
包含 child的 parent 的 offsetWidth <p>
。在计算父级的 offsetWidth 时,所有其他浏览器都会考虑子级,但 chrome 会给出 0 的宽度。我的解决方案是将外部标记设置为display:block
.
这个小提琴演示了这个问题。
我想知道为什么会这样?这是由于将 a 放置在<p>
内部<a>
吗?
我想你可以在这里找到所有需要的信息。
仅引用相关部分:
当一个内联盒包含一个流内块级盒时,内联盒(及其在同一行盒内的内联祖先)在块级盒(以及任何连续或仅由可折叠的空白和/或流外元素),将内联框分成两个框(即使任一侧为空),一个在块级框的每一侧。断点前和断点后的行盒被封闭在匿名块盒中,块级盒成为这些匿名盒的兄弟。当这样的内联盒受到相对定位的影响时,任何产生的平移也会影响内联盒中包含的块级盒。
因此,例如,如果您在您的(例如这个jsfiddleinline
)中添加一些内容,那么它的宽度将是那些内联内容的宽度。wrapper
wrapper
width