示例标记:逆转的z-index渲染顺序
<div class="wrapper">
<h2>Trigger</h2>
<div>This is some content</div>
</div>
<div class="wrapper">
<h2>Trigger</h2>
<div>This is some content</div>
</div>
<div class="wrapper">
<h2>Trigger</h2>
<div>This is some content</div>
</div>
范例CSS:
.wrapper {z-index: 1}
.wrapper div {display: none; position: absolute;}
通过JavaScript(jQuery的)我附加了一个click事件给每个H2即会再切换内容div以显示:块。
意图是,这些是可扩展的内容块,将重叠页面上的其他任何内容。
问题是我希望第一个重叠第二个,如果所有这些都打开,它们将与第三个重叠。
但是,由于每个元素都是在前一个元素之后渲染的,所以实际的堆叠顺序是相反的(最后创建的内容元素覆盖之前创建的一个元素)。
有没有一种巧妙的方式来颠倒CSS/HTML的这种行为?或者是让页面呈现的解决方案,然后通过javascript,按顺序抓住所有的内容divs,并按相反的顺序给每个z-index?
UPDATE:
这里有一些更具体的标记:
<div style="padding: 10px;">Hello World
<div style="position: relative; top: -5px;">
<div style="position: absolute; background: yellow;"><p>This</p><p>is</p><p>overlapping</p></div>
</div>
</div>
<div style="padding: 10px;">Hello World
<div style="position: relative; top: -5px;">
<div style="position: absolute; background: orange;"><p>This</p><p>is</p><p>overlapping</p></div>
</div>
</div>
<div style="padding: 10px;">Hello World
<div style="position: relative; top: -5px;">
<div style="position: absolute; background: red;"><p>This</p><p>is</p><p>overlapping</p></div>
</div>
</div>
下面的标记将产生3个的div,每一个颜色的div重叠。由于渲染顺序,最后一个绝对定位的DIV(红色)将位于前一个(橙色)之上。
我找不出需要应用什么类型的z索引才能让FIRST彩色重叠div处于顶部。 Z-index从上到下的顺序应该反映标记(顶部为黄色,底部为红色)。
这当然与标准相反。
我愿意使用javascript来修复这个后显示,但我仍然在为需要通过javascript应用的确切CSS而努力。我能做的是什么?
我很乐意看到这个答案!我有完全相同的问题,除非我事先不知道有多少堆栈! – n8wrl 2010-12-22 20:13:10
如果css3函数可以用作z-index的值,那将很酷。 I.E .:'反增量:我的柜台; z-index:counter(my-counter,decimal);'OR'z-index:calc(xpos + 1)',但是我不能让它工作。 – skibulk 2014-10-09 18:25:05