Javascript 拆卸div后IE高度100%不正确
如果我在页面中添加了一个特定高度的绿色div,那么就会像预期的那样添加滚动条。当我删除div时,所有浏览器中的滚动条都消失了,但仍保留在IE中,并且一个白色的空白代替了div,不知何故,删除后div高度没有正确重新计算 请看这个小提琴的现场演示,你会看到它在除IE以外的所有浏览器中都能工作 删除html标记规则的Javascript 拆卸div后IE高度100%不正确,javascript,css,internet-explorer,Javascript,Css,Internet Explorer,如果我在页面中添加了一个特定高度的绿色div,那么就会像预期的那样添加滚动条。当我删除div时,所有浏览器中的滚动条都消失了,但仍保留在IE中,并且一个白色的空白代替了div,不知何故,删除后div高度没有正确重新计算 请看这个小提琴的现场演示,你会看到它在除IE以外的所有浏览器中都能工作 删除html标记规则的溢出:滚动时,问题似乎得到了解决,不幸的是,这不是一个选项。 我在IE、Chrome、FF和Opera的最新版本中对此进行了测试 为什么会发生这种情况?我如何强制IE在插入dom后显示
溢出:滚动时,问题似乎得到了解决,不幸的是,这不是一个选项。
我在IE、Chrome、FF和Opera的最新版本中对此进行了测试
为什么会发生这种情况?我如何强制IE在插入dom后显示正确的高度
请注意,当您调整窗口大小时,空白空间会立即消失,因此我只需要一种方法来实现这一点,而无需实际重新调整窗口大小。添加$('body').css('height',0)代码>
似乎当IE以100%渲染高度时,如果它增长,它将保持最大的大小,因为现在它是新的100%。要使它再次收缩,而不是给它一个高度,您需要给它一个最小高度-将html和主体css更改为
body, html {min-height:100%;}
这将使包装器在绿色块移除后调整大小:
编辑
我发现让ie重新呈现页面的唯一方法是在html上设置overflow属性:
$('html').css('overflow', 'auto');
我通过使用jQuery设置dom插入和移除的动画(需要两者都设置)修复了这个问题,这个解决方案只起作用,因为我可以使用动画
我不认为这将工作,如果你打开动画
我很想找到一个更好的解决方案,但目前就是这样。不管怎样,动画看起来更好,所以这是双赢的(至少对我来说):)
请看这里:
秘密更新:
如果使用$.fx.off=true禁用动画代码>然后它似乎可以工作。可能与动画在隐藏和显示div的样式上摸索的方式有关,而不是简单地删除div
奇怪的是,我在删除元素之前也试图隐藏它,但没有成功。
无论如何,我还是坚持使用动画。这是可行的,但是如果我添加$('body').css('height','100%”),高度显然需要保持100%代码>就在你的代码行之后,什么都没有发生这很好,但是,我不能使用最小高度,因为在我的实际设置中,一个div必须一直向下延伸。这要求html和正文具有100%的高度。我真的需要一种方法来迫使ie重新焊接窗口。请注意,重新调整windowGreat的大小时确实会发生回流,这确实会起作用。不幸的是,我不能使用乙醚,就像我在帖子中指出的那样,我无法更改溢出,因为滚动条需要在那里,以防止屏幕在滚动条出现时改变宽度。滚动条应保持在那里,并带有overflow:auto
-如果你看小提琴,你应该在绿色框出现后仍能看到滚动条。即使开头没有可滚动的内容。抱歉,auto
意味着只有当元素中的内容溢出时才会显示滚动条,因此如果屏幕太大而不需要滚动条,则不会显示滚动条
$("#spacer").slideDown();
$("#spacer").slideUp();