我最近接手的一个项目是导航菜单显示不正确。我把问题缩小到chrome如何计算包含子节点的父节点的offsetwidth。所有其他浏览器在计算父浏览器的OffsetWidth时都会考虑子浏览器,但Chrome会给出0的宽度。我的解决方案是将外部标记设置为<a>
。
这个小提琴说明了这个问题。
http://jsfiddle.net/2ZwNM/
我想知道为什么会这样?这是因为在<p>
中放置了display:block
吗?
最佳答案
我想你可以找到所有必需的信息。
仅引用相关部分:
当内联框包含流内块级别框时,内联框(及其在同一行框内的内联祖先)将围绕块级别框(以及任何连续的或仅由可折叠空白和/或流外元素分隔的块级别同级),将内联框拆分为两个框(即使两边都是空),块级别框的每侧各一个。中断前和中断后的行框被封装在匿名块框中,块级框成为这些匿名框的同级。当这样的内联框受相对位置影响时,任何结果转换也会影响内联框中包含的块级框。
例如,如果您在inline
中添加了一些wrapper
内容(例如,这个here),那么wrapper
的宽度将是这些内联内容的width
。