IE又被证明是我存在的祸根。我正在处理的网站的顶部有一个水平菜单,其中的一个项目会触发一个绝对位于父菜单DIV(定位相对)内的纯CSS菜单。这使菜单在IE和符合W3C标准的浏览器中都完美无瑕。IE浏览器忽略定位元素上的Z索引
当我在页面上放置更多的元素时,会出现问题。这些也是相对定位的,因为它们内部的数据需要被绝对定位......再次,这在我测试过的所有浏览器中都能正确显示。
问题是,顶部菜单打开后,部件被位于页面下方的已定位元素遮挡 - 实际上,即使在所有元素上都定义了z-index属性,它也位于这些元素之下。 (在CSS文件和内联中)。
让IE正确显示的唯一方法是将菜单的实际HTML放在页面底部,下面(以DOM术语说明)页面上其他位置的定位元素。我只会作为绝对最后的手段来做到这一点。
所有元素都是相同类型(div)。下面是相关HTML:
<div id='menu'>
<div id='cat_menu' style='display:none;z-index:10000;'>
<table cellspacing='0' cellpadding='0' class='brmenu' width='100%'>
[data]
</table>
</div>
<div class='product_new' style='z-index:20;'>[data]</div>
<div class='product_listing' style='background-color:#FFFFFF;'>[data]</div>
和相关的CSS:
div#menu {
height: 26px;
padding: 0;
position: relative;
}
div#cat_menu {
position: absolute;
top: 25px;
left: 115px;
width: 300px;
z-index: 1000;
}
div.product_new {
background-image: url("/images/sp_images.png");
background-position: 0 -108px;
background-repeat: no-repeat;
padding 0px;
height: 40px;
font-size: 9pt;
margin-top: 5px;
position: relative;
z-index: 20;
}
我正在使用原型框架,所以我宁愿不使用任何jQuery,特别是一次性使用。 – mwieczorek 2010-03-01 10:36:05