15

我正在尝试覆盖一个会在 flexbox 容器中浮动的 div。

标头是一个 flexbox 容器,容器中有 3 个 flexbox div。我想覆盖其他三个 div 但仍被限制在 .header flexbox 容器 div 中的覆盖。

我在 stackoverflow 和其他地方尝试了多种方法,但是在与 flexbox 结合使用时如何解决覆盖或分层的解决方案。

感谢您的任何建议!

链接到以下的jsfiddle:链接

HTML:

<div class="header">
    <div class="headerLeft">Left</div>
    <div class="headerMiddle">Middle</div>
    <div class="headerRight">Right</div>
    <div class="overlay">Overlay</div>
</div>

CSS:

.header {
    border: 3px solid orange;
    width: 100%;
    display: -webkit-flex;
    display: flex;
    z-index: 0;
}

.headerLeft {
    border: 2px solid chartreuse;
    -webkit-flex: 1;
    flex: 1;
    z-index: 1;
}
.headerMiddle {
    border: 2px solid darkorchid;
    -webkit-flex: 1;
    flex: 1;
    z-index: 1;
}
.headerRight {
    border: 2px solid darkorange;
    -webkit-flex: 1;
    flex: 1;
    z-index: 1;
}

.overlay {
    border: 2px solid green;
    z-index: 10;
    background: rgba(0,0,0,0.3);
}
4

1 回答 1

40

查看所有注释掉的代码,您在 flex 容器上的相对定位上处于正确的轨道上。您只需要绝对定位您的叠加元素。

http://jsfiddle.net/UHECE/4/

添加/取消注释这些样式:

.header {
    position: relative;
}

.overlay {
    position: absolute;
    left: 0; top: 0; right: 0; bottom: 0;
}
于 2013-04-19T19:24:59.437 回答