我正面临着我在css中遇到过的一个最疯狂的问题......
我有两个CSS-jQuery水平下拉列表,一个在上面,一个在下面,在点击时显示下拉列表。
当我点击IE6和IE7中的上部下拉列表时出现问题,并且绝对定位元素超过相对定位的元素。上限下拉列表(绝对值)显示下面的下拉列表(相对)。
JavaScript的:
$("button").click(function(e){
$(".menu").hide();
$(this).siblings(".menu").show();
e.stopPropagation()
});
$(document).click(function(){$(".menu").hide()});
HTML:
<div class="top">
<div class="dropdown">
<button>Dropdown1 v</button>
<div class="menu">
<a href="#link">Option a</a>
<a href="#link">Option b</a>
<a href="#link">Option c</a>
</div>
</div>
<div class="dropdown">
<button>Dropdown2 v</button>
<div class="menu">
<a href="#link">Option d</a>
<a href="#link">Option e</a>
<a href="#link">Option f</a>
</div>
</div>
</div>
CSS:
.dropdown{float:left;display:inline;clear:left;position:relative}
.menu{position:absolute;left:0;top:22px;z-index:1}
.menu a{display:block}
.menu{display:none;border:1px solid #ccc;padding:3px;background:#ffffe0}
以下是示例:
解决方案:
答案 0 :(得分:4)
IE中存在z-index的已知问题。它对绝对定位元素的z-index处理方式与对相对定位元素的处理方式不同。这就像你有两组z索引。如果无法使所有元素使用相同的定位,则可以通过使用具有相同定位的包装来修复它。
编辑1:
http://caffeineoncode.com/2010/07/the-internet-explorer-z-index-bug/
编辑2:
Internet Explorer z-index bug?
编辑3:
jQuery解决方案:
http://www.vancelucas.com/blog/fixing-ie7-z-index-issues-with-jquery/
http://webdeveloper2.com/2010/01/how-to-fix-the-ie-z-index-bug-with-jquery/
答案 1 :(得分:0)
当我不得不使用IE z-index问题时,我发现最好的解决方案是确保每个容器都是同一堆叠索引的一部分。意思是,所有元素都充当同一堆栈的层。这通常是让IE行为有趣的原因。
您可以通过向所有容器添加position:relative; z-index:auto;
来执行此操作。如果可能的话,你想要一直这样做。这应该强制IE考虑堆栈的所有内容,从而正确地分层。