现象:

先来看下这段代码:

 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;
});