Z-index bug on IE is a well-known flaw that most of front-end web developers have heard about. It is documented pretty clear on PPK Quirksmode:
http://www.quirksmode.org/…/Explorer_z_index_bug.html
and here
http://therealcrisp.xs4all.nl/../IE-zindexbug.html
Basically here is the break-down of the workaround…
We have two div elements box1, nested in box3 and box2.
<div class="canvas"> <div class="box" id="box3"> <div class="box" id="box1"> Box 1 </div> </div> <div class="box" id="box2"> Box 2 </div> </div>
And we want box1 to be on top of box2 by setting z-index as the following :
.canvas { position: relative; } .box { width: 50px; height: 50px; position: absolute; } #box1 { top: 20px; left: 20px; background: green; z-index: 4000; } #box2 { top: 50px; left: 50px; background: yellow; z-index: 3000; }The above code makes box1 appear on top of box2 on all browsers except IE 6+ as positioned elements do generate a new stacking context, starting with z-index of 0. In this case since box3 and box2 are siblings (on the same level), and box3 's z-index is less than that of box2, so box2 and its child nodes ( on a higher stacking context ) will be always on top of box3 and its child nodes.. even if some of box3's child nodes have higher z-index than those of box2 and its child nodes ( box1 has z-index of 4000 but is still displayed beneath box2 of z-index 3000).
The solution here is to put box1 in a stacking context higher than that of box2 by making z-index of box3 higher than that of box2.
#box3 { z-index: 30001; }Now box1 is on top of box2 as desired ! How about two elements nested in <td> cells of the same table like this:
<table> <tr> <td class="td3"> <div class="box1"></div> </td> </tr> <tr> <td> <div class="box2"></div> </td> </tr> </table>All you need to do is set the z-index of td3 higher than that of box2 to make td3 and its child nodes (including box1) stay on top of box2.
.td3 { position: relative; z-index: 3001; } .box { width: 50px; height: 50px; position: absolute; } #box1 { z-index: 4000; } #box2 { z-index: 3000; }You will notice I set td3 to position:relative so that the TD cell still keeps its relative position with respect to other cells in the table. That is for today :) Feel free to share your ideas on this bug IE bug with us.. Cheers, Totti
fdfd<div><div id=”box1″><div id=”box2″>Box 2</div></div><div id=”box3″>Box 3</div></div>