问题描述
|
我有一个固定在导航栏上的下拉菜单。与当前Twitter设计使用的类似。
这是此问题的链接:http://jsfiddle.net/JDahp/3/(已更新,比以前的迭代要简单得多)
我使用jQuery使菜单出现/消失,效果很好。菜单在工具栏上方(而不是下方)设置动画。
我不明白为什么z-index不覆盖下拉菜单的常规视觉堆栈?
以下是相关的CSS属性
#top-stuff{
position:fixed;
top:0;
left:0;
z-index:12;
width:100%;
}
.dropdown {
position: absolute;
z-index: 1;
}
HTML的简化版本:
<div id=\"top-stuff\">
<a href=\"\" class=\"optionslinka\">Options</a>
<div class=\"dropdown\" id=\"optionsdropdown\">
<!-- Drop down content is here -->
</div>
</div>
解决方法
您的小提琴有些复杂,我很忙,但我认为您的问题可能与IE闻名的z-index错误有关(但也影响了其他浏览器)。
基本上,如果未在所有父容器上都定义
z-index
,那么每个z-index
都会启动一个新的\'stacking context',这意味着它们不会正确重叠。想想2张牌而不是1张牌。
尝试在.dropdown
以上的所有父容器上设置position:relative;z-index:auto;
(或其他任何position:
,例如absolute
等)
一些资源以了解更多信息:
下拉菜单问题:http://brenelz.com/blog/squish-the-internet-explorer-z-index-bug/
深入了解:http://caffeineoncode.com/2010/07/the-internet-explorer-z-index-bug/
与您类似的问题:http://richa.avasthi.name/blogs/tepumpkin/2008/01/11/ie7-lessons-learned/
您会注意到,在代码中比菜单更低的位置,具有任何z-index的元素都将显示在菜单上方,而不管菜单给出的z-index是什么,与您想要的元素完全相反即将发生。
,我删除了所有的z-index位并放了
z-index: -1;
在这个
#optionsdropdown
这似乎可行,我相信问题出在位置固定的容纳元素。