将柔性物品放在网格中彼此叠加而不包裹它们

时间:2016-04-27 19:43:37

标签: css flexbox

我使用flexbox进行以下布局:

enter image description here

我希望右侧包含2的div,TeamScorers应该构成左侧的空格。

所需布局: enter image description here

与使用表格的行数为2的2 div相同的想法。

有没有办法将TeamScorers放在2的左边而不将它们包装在自己的div中?如果是这样,值得麻烦吗?

到目前为止,这是我的CSS:

.container {
  max-width: 600px;
}

.team {
  background-color: chartreuse;
}

.score {
  background-color: brown;
}

.scorers {
  background-color: steelblue;
}

.cards-desktop {
  background-color: goldenrod;
}

.carded-players {
  background-color: darkorange;
}

.left-col {
  display: flex;
  flex-flow: row wrap;
}
.left-col > * {
  flex: 1 100%;
}

.team {
  order: 1;
}

.score {
  order: 3;
}

.scorers {
  order: 2;
}

.cards-desktop {
  order: 4;
}

.carded-players {
  order: 5;
}

.team {
  flex: 1 auto;
}

.score {
  flex: 0 150px;
  font-size: 60px;
}

其他断点的布局会有所不同,所以我希望有一个HTML块不会被复制或模仿其他断点。这就是为什么我不想将这两个div包装在一个容器中,因为在其他断点上它是不必要的'布局。

Codepen Link

1 个答案:

答案 0 :(得分:4)

下面..

包裹1,2和& 3在他们自己的div中display:flex / flex-direction:column / flex-wrap:wrap

然后在各种组件上设置宽度以适应。

不幸的是,我认为Chrome需要在包装上固定一个固定的高度来强制换行(这是我认为的错误)......而且你有。



* {
  box-sizing: border-box;
}
.team {
  background: chartreuse;
}
.score {
  background: brown;
}
.scorers {
  background: steelblue;
}
.cards-desktop {
  background: goldenrod;
}
.carded-players {
  background: darkorange;
}
.wrap {
  width: 80%;
  margin: auto;
  display: flex;
  flex-direction: column;
}
.top > div {
  padding: 5px;
}
.bottom > div {
  height: 25px;
}
.top {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  height: 150px;
}
.team,
.scorers {
  height: 50%;
  width: 75%;
}
.score {
  width: 25%;
  flex: 1 0 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 28px;
}

<div class="wrap">
  <div class="top">
    <div class="team">Team</div>
    <div class="scorers">Scorers</div>
    <div class="score">
      <h1>2</h1>
    </div>
  </div>
  <div class="bottom">
    <div class="cards-desktop">cards-desktop</div>
    <div class="carded-players">carded-players</div>
  </div>
</div>
&#13;
&#13;
&#13;