使用 jQuery 修复 IE7 z-index 的 bug
文章目录
现象:
先来看下这段代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
td { text-align: center; } .parent { width: 300px; height: 30px; position: relative; display: inline-block; background: #f00; border: 1px solid #aaa; } .parent1 { width: 200px; background: #000; } .child { width: 200px; height: 200px; position: absolute; z-index: 1000; top: 100%; left: -1px; background: #fff; border: 1px solid #aaa; } .none { display: none; } <table border="0"> <tr> <td> <div class="parent parent1"> <div class="child"></div> </div> </td> </tr> <tr> <td> <div class="parent parent2"> <div class="child none"></div> </div></div> </td> </tr> </table> |
在非 IE7 下的浏览器的显示效果:
在 IE7 下:
原因:
这是因为同个 parent 在 IE7 的渲染下,后面的元素的 z-index 比前面的 大 的 bug。
解决:
可以使用 jQuery 设置 css 中 z-index 的值:
1 2 3 4 5 |
var zIndex = 1000; $('.parent').each(function() { $(this).css('z-index', zIndexNumber); zIndex -= 10; }); |
文章作者 wenzhixin
上次更新 2013-12-06