在 IE8 中隐藏/显示某些元素时出现问题。如果一个元素display:inline-block
有任何子元素(包括嵌套子元素)display:block
,那么该元素的任何子元素在隐藏/显示时都会出现问题。页面未正确重绘,其他元素位置未更改以反映新隐藏/显示的元素。
显示问题的最小标记如下。在示例中,当您单击“可单击元素”时,正下方的三个 div 将被隐藏。但是,Footer Div 不会改变位置 - 留下了很大的间隙。如果您执行某些操作来强制重新绘制页面,例如选择页面上的所有文本,则页脚会跳转到正确的位置。
显示元素时会发生类似的情况。不是将页脚 div 推到底部,而是与新显示的元素重叠。
<div style="display:inline-block">
<div>
<!-- Any number of other HTML elements -->
<div style="display:block">
<div class = "clickable" >Clickable element.</div>
<div class = "toggleable">Hideable element 1.</div>
<div class = "toggleable">Hideable element 2.</div>
<div class = "toggleable">Hideable element 3.</div>
</div>
</div>
</div>
<div>Footer Div</div>
<script type="text/javascript">
$('.clickable').click(function(){
$('.toggleable').toggle();
});
</script>
一段时间以来,我一直在尝试解决这个问题,而且我几乎可以肯定我已经解决了最小的问题(inline-block
元素后跟block
元素,并在子元素上执行显示/隐藏)。有没有人遇到过这个问题 - 或者关于如何解决这个问题的任何建议?