Javascript 拆卸div后IE高度100%不正确

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后显示

如果我在页面中添加了一个特定高度的绿色div,那么就会像预期的那样添加滚动条。当我删除div时,所有浏览器中的滚动条都消失了,但仍保留在IE中,并且一个白色的空白代替了div,不知何故,删除后div高度没有正确重新计算

请看这个小提琴的现场演示,你会看到它在除IE以外的所有浏览器中都能工作

删除html标记规则的
溢出:滚动
时,问题似乎得到了解决,不幸的是,这不是一个选项。
我在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();