将弹性项目堆叠在一起
Stacking flex items on top of each other
我正在尝试使用 flexbox 构建这样的布局:
我怎样才能将这些物品堆叠在一起?
我使用 CSS 网格构建上面屏幕截图中的内容,但未能使用 flexbox 执行此操作。
.grid {
display: grid;
height: 100%;
grid-template-columns: 2rem repeat(2, auto) 2rem;
grid-template-rows: 4rem 4rem auto;
background-color: #fff;
}
.layer1 {
background-color: rgb(64, 213, 187);
grid-column-start: 1;
grid-column-end: span 3;
grid-row-start: 1;
grid-row-end: span 3;
}
注意:此问题询问有关沿 z 轴 堆叠弹性项目的问题。如果您是来这里寻找 y 轴 的 "Stacking flex items on top of each other",请参阅此 post:.
Flexbox 旨在沿列或行对齐元素。它不是为堆叠设计的。
CSS 然而,网格非常适合这类事情。
Grid 的 CSS 替代方法是绝对定位:
(请注意,当 flex item is absolutely positioned 时,它不再接受大多数 flex 属性。)
article {
display: flex;
height: 100vh;
position: relative;
}
section:nth-child(1) {
flex: 1;
background-color: turquoise;
}
section:nth-child(2) {
position: absolute;
top: 50px;
left: 50px;
right: 0;
bottom: 0;
background-color: salmon;
}
section:nth-child(3) {
position: absolute;
top: 100px;
left: 250px;
right: 0;
bottom: 0;
background-color: thistle;
}
body {
margin: 0;
}
<article>
<section></section>
<section></section>
<section></section>
</article>
jsFiddle
我正在尝试使用 flexbox 构建这样的布局:
我怎样才能将这些物品堆叠在一起?
我使用 CSS 网格构建上面屏幕截图中的内容,但未能使用 flexbox 执行此操作。
.grid {
display: grid;
height: 100%;
grid-template-columns: 2rem repeat(2, auto) 2rem;
grid-template-rows: 4rem 4rem auto;
background-color: #fff;
}
.layer1 {
background-color: rgb(64, 213, 187);
grid-column-start: 1;
grid-column-end: span 3;
grid-row-start: 1;
grid-row-end: span 3;
}
注意:此问题询问有关沿 z 轴 堆叠弹性项目的问题。如果您是来这里寻找 y 轴 的 "Stacking flex items on top of each other",请参阅此 post:
Flexbox 旨在沿列或行对齐元素。它不是为堆叠设计的。
CSS 然而,网格非常适合这类事情。
Grid 的 CSS 替代方法是绝对定位:
(请注意,当 flex item is absolutely positioned 时,它不再接受大多数 flex 属性。)
article {
display: flex;
height: 100vh;
position: relative;
}
section:nth-child(1) {
flex: 1;
background-color: turquoise;
}
section:nth-child(2) {
position: absolute;
top: 50px;
left: 50px;
right: 0;
bottom: 0;
background-color: salmon;
}
section:nth-child(3) {
position: absolute;
top: 100px;
left: 250px;
right: 0;
bottom: 0;
background-color: thistle;
}
body {
margin: 0;
}
<article>
<section></section>
<section></section>
<section></section>
</article>