4

我最近接手的一个项目是导航菜单显示不正确。我将问题缩小到 chrome 如何计算<a>包含 child的 parent 的 offsetWidth <p>。在计算父级的 offsetWidth 时,所有其他浏览器都会考虑子级,但 chrome 会给出 0 的宽度。我的解决方案是将外部标记设置为display:block.

这个小提琴演示了这个问题。

http://jsfiddle.net/2ZwNM/

我想知道为什么会这样?这是由于将 a 放置在<p>内部<a>吗?

4

1 回答 1

1

我想你可以在这里找到所有需要的信息。

仅引用相关部分:

当一个内联盒包含一个流内块级盒时,内联盒(及其在同一行盒内的内联祖先)在块级盒(以及任何连续或仅由可折叠的空白和/或流外元素),将内联框分成两个框(即使任一侧为空),一个在块级框的每一侧。断点前和断点后的行盒被封闭在匿名块盒中,块级盒成为这些匿名盒的兄弟。当这样的内联盒受到相对定位的影响时,任何产生的平移也会影响内联盒中包含的块级盒。

因此,例如,如果您在您的(例如这个jsfiddleinline )中添加一些内容,那么它的宽度将是那些内联内容的宽度。wrapperwrapperwidth

于 2013-07-12T14:08:54.353 回答