0

我正在尝试使用 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;
}
4

1 回答 1

2

注意:此问题询问有关沿z 轴堆叠 flex 项目的问题。如果您来这里是为了寻找沿y 轴“将 flex 项堆叠在一起” ,请参阅这篇文章:防止 flex 项从一边渲染到另一边


Flexbox 旨在沿列或行对齐元素。它不是为堆叠而设计的。

然而,CSS Grid 非常适合这类事情。

Grid 的 CSS 替代方案是绝对定位:

(请注意,当一个弹性项目是绝对定位时,它不再接受大多数弹性属性。)

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

于 2017-05-03T12:13:46.360 回答