我在IE7文档模式下计算跨度高度时遇到问题。确切地说,嵌入在span中的div根据IE版本返回不同的高度。
代码(jquery 1.4.2,也在较新版本上测试过):
$('#sys_MainPage').height()
返回cca。 260,Chrome,Firefox和IE 8/9。当我激活IE7文件模式代码返回863? 这是具有相关属性的文档结构 IE7:
----SPAN:sys_MainPage
height=863
innerHeight=863
outerHeight=863
cssHeight=auto
position=static
overflow=visible
--------DIV:UgovoriCopy
height=853
innerHeight=863
outerHeight=863
cssHeight=99%
position=static
overflow=auto
------------DIV:GridViewUgovorGridWrapper
height=862
innerHeight=862
outerHeight=862
cssHeight=100%
position=absolute
overflow=visible
----------------TABLE:GridViewUgovorGrid
height=142
innerHeight=142
outerHeight=144
cssHeight=auto
position=static
overflow=visible
----------------SCRIPT:dxss_1127065360
height=0
innerHeight=0
outerHeight=0
cssHeight=auto
position=static
overflow=visible
IE9:
----SPAN:sys_MainPage
height=10
innerHeight=10
outerHeight=10
cssHeight=auto
position=static
overflow=visible
--------DIV:UgovoriCopy
height=0
innerHeight=10
outerHeight=10
cssHeight=99%
position=static
overflow=auto
------------DIV:GridViewUgovorGridWrapper
height=866
innerHeight=866
outerHeight=866
cssHeight=100%
position=absolute
overflow=visible
----------------TABLE:GridViewUgovorGrid
height=765
innerHeight=765
outerHeight=765
cssHeight=765.44px
position=static
overflow=visible
----------------SCRIPT:dxss_1127065360
height=381
innerHeight=381
outerHeight=381
cssHeight=auto
position=static
overflow=visible
修改
我通过删除UgovoriCopy css高度(99%)解决了这个问题。但我仍然想知道为什么IE7文档模式中存在问题。
答案 0 :(得分:4)
首先将块级元素(div)放在内联元素(span)中是无效的。 其次,IE7和其他浏览器(如FF,chrome和safari)上的浏览器具有更好的渲染引擎,并且可以直观地处理错误标记。
至于高度的css属性:99%,我认为在IE7中,因为它使标记无效并且不知道如何正确处理它,它将div扩展了99%并且当span标记包含div时它的行为也一样。 在其他浏览器如FF,chrome中,即使标记无效,它们也会直观地处理它,即使div有99%并且是块元素,但其父(span)是内联元素,它占据基于金额的高度内容(行为正确)并返回适当的高度
答案 1 :(得分:1)
我认为这是一个问题,即你不能在一个范围内有一个div。最好的方法是在div中有一个span。尝试更改此标记,您的问题可能会更容易。你还检查你的填充/边距,因为规则就是计算元素高度中填充的规则在chrome上是不一样的。
告诉我,如果我的建议改变了你的问题。