如何为列方向flex容器的一部分覆盖一个元素的列方向?

时间:2019-01-23 01:57:29

标签: html css css3 flexbox

如果我有一个带有flex-direction: column的flex容器,可以说这个容器包装了3个div。

我的问题是:如何在不更改此html公式的情况下使第二个div与第一个div内联显示,而第三个div具有列方向的影响:

.flex-container {
  display: flex;
  align-items: center;
}
<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

我需要在不修改html的情况下做到这一点,有没有办法仅通过CSS来实现?

2 个答案:

答案 0 :(得分:1)

你们要么

  • 使用display:flex(1)在包装器中放入前两个div
  • 或将父级的方向更改为row,给其flex-wrap:wrap并给第三格min-width: 100%(2)

(1)

.flex-container {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.flex-container > *:first-child{
  display: flex;
  align-self: stretch;
  justify-content: space-around;
}
<div class="flex-container">
  <div>
    <div>1</div>
    <div>2</div>
  </div>
  <div>3</div>
</div>

(2)

.flex-container {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: space-around;
}
.flex-container > *:last-child{
  min-width: 100%;
  text-align: center;
}
<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

答案 1 :(得分:1)

使用CSS order属性重新排列容器中的项目。

.flex-container {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  height: 100px;
  align-content: flex-start;
}

.flex-container > div {
  flex: 0 0 40px;
  width: 50px;
}

.flex-container > div:nth-child(2) {
  order: 1;
}

/* non-essential decorative styles */
.flex-container {
  background-color: lightgray;
}
.flex-container > div {
  margin: 5px;
  border: 1px solid black;
  background-color: lightgreen;
  display: flex;
  align-items: center;
  justify-content: center;
}
* {
  box-sizing: border-box;
}
<div class="flex-container">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>