IE8で特定の要素を表示/非表示にするときに問題が発生します。の要素にdisplay:inline-block
。の子(ネストされた子を含む)がdisplay:block
ある場合、その要素の子は非表示/表示時に問題が発生します。ページは正しく再描画されず、他の要素の位置は、新しく非表示/表示された要素を反映するように変更されません。
問題を示す最小限のマークアップは以下のとおりです。この例では、[クリック可能な要素]をクリックすると、すぐ下の3つのdivが非表示になります。ただし、フッター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
、子要素に対して表示/非表示を実行します)。誰かが以前にこれに遭遇したことがありますか?またはこれを回避する方法についての提案はありますか?