http://madisonlane.businesscatalyst.com
我想让 div#sign-post 显示在 div#bottom 的上方。在除了 IE6 和 IE7 之外的所有浏览器中,这个效果都很好。有人能看出问题在哪里吗?
此外,IE6 在 div#bottom 的顶部额外显示了 198 像素。
http://madisonlane.businesscatalyst.com
我想让 div#sign-post 显示在 div#bottom 的上方。在除了 IE6 和 IE7 之外的所有浏览器中,这个效果都很好。有人能看出问题在哪里吗?
此外,IE6 在 div#bottom 的顶部额外显示了 198 像素。
z-index
时,为了决定哪一个显示在顶部,您需要检查它们是否有任何已定位的父元素也设置了z-index
。如果没有或者父级是相同的,则具有更高z-index
的元素获胜。如果有,则需要比较父级,子元素的z-index
是无关紧要的。z-index
决定了元素与其“堆叠父级”(最近的祖先具有设置为relative
、absolute
或fixed
的position
和z-index
)的其他子元素相比如何放置,但与其他元素比较无关;计数的是堆叠父级的z-index
(或可能是堆叠父级的堆叠父级等)。在典型文档中,您仅在几个元素(如下拉菜单和弹出窗口)上使用z-index
,其中没有一个包含另一个,所有具有z-index
的元素的堆叠父级都是整个文档,您通常可以认为z-index
是全局的、文档级别的排序。<select>
或Flash)似乎在文档之外,而且没有办法通过z-index将东西放在它们上面。通常通过在它们和弹出窗口之间放置一个iframe来解决这个问题。 - Tgr同意验证器的评论 - 验证通常是有帮助的。但如果不行,以下是一些在IE中操作z-index的要点:
1)你正在操作其z-index的元素应该处于同一级别上,即你应该设置#bottom和#body的z-index。
如果不可行,那么
2)除非你将要应用它们的元素具有 position:relative
属性,否则IE有时不会正确地应用z-index。尝试将该属性应用于#bottom 和 #body(或 #signpost)。
让我知道它的效果如何。
Darko
我刚遇到了这个问题,根据Quirksmode的建议,解决方法是给你尝试设置的节点的直接父节点分配一个自己的z-index,该z-index应小于你尝试设置的节点的z-index。以下是一个快速示例,适用于IE6。
<html>
<head>
<style type="text/css">
#AlwaysOnTop {
background-color: red;
color: white;
width: 300px;
position: fixed;
top: 0;
z-index: 2;
}
#Header {
color: white;
width: 100%;
text-align: center;
z-index: 1;
}
</style>
</head>
<body>
<div id="Header">
<div id="AlwaysOnTop">This will always be on top</div>
</div>
<div id="Content">Some long amount of text to produce a scroll bar</div>
</body>
</html>
#Header
放置在#Content
的上方(它可能是一个定位元素)。#Header
和#AlwaysOnTop
之间的z-index关系是无关紧要的。有关详细信息,请参见我的答案。 - Tgr欢迎,我已经解决了这个问题:
.header {
position: relative;
z-index: 1001;
}
.content {
position: relative;
z-index: 1000;
}
唯一可靠的解决方案是将顶部元素放在代码下面,然后使用绝对定位将它们推到其他内容上方。
例如:WordPress: 将导航放在页脚文件中,但仍在页面包装器内。
这也可能为搜索引擎带来一些优势,因为它们可以直接从内容开始,而不必先爬行菜单...
更新: 我需要更正自己。虽然将元素放在下面然后推上去仍然是最简单的方法,但在某些情况下,这不是在合理时间内实现的。然后您必须确保每个父元素都具有某种定位和有意义的z-index。然后z-index应该再次在IE7中起作用。
我最近遇到了一个正在进行的问题:无法在一个图层之上显示另一个图层。在我的情况下,我是通过Javascript编程创建了两个图层,一个用于显示自定义控件,另一个用于在其后创建全屏图层。Firefox没问题,但IE总是将全屏图层显示在其他所有图层的顶部。
在浏览网络上的众多建议之后,我最终让它起作用的唯一方法是从两个图层中删除position:
属性,并微调margin-top:
属性,直到我得到满意的结果。
有点混乱,但它能够工作,等到IE 8解决所有当前的错误之前都会很好......