使用flexbox中心多个元素 - flex-flow:行换行将每个子项放在单独的行中

时间:2017-01-22 11:30:12

标签: html css flexbox

我有以下布局:

.app-container {
  display: flex;
  flex-flow: row wrap;
  align-content: center;
  justify-content: space-around;
  min-height: 100vh;
  background-color: #4caf50;
  font-family: "Roboto", "Noto", sans-serif;
  font-size: 14px;
  font-weight: normal;
  color: rgba(0, 0, 0, 0.87);
  margin-bottom: 84px;
}

.card {
  background-color: #fff;
  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.12);
  margin: 8px;
  border-radius: 2px;
  min-width: 304px;
  max-width: 466px;
  font-family: 'Roboto', 'Noto', sans-serif;
  flex-grow: 1;
}

.card .text {
  padding: 16px 16px 25px 16px;
  font-size: 14px;
}
<div class="app-container">
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
        <p>Four</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
      </div>
    </div>
</div>

现在我想要发生的是.card div自然浮动到有空间的同一条线上,但保持垂直和水平方向居中(因此卡的高度保持不变而不是无论背景如何,卡片都会扩展以填满整行。

如果我没有设置display:inline-block; .card div,则每行只保留一个。但是,如果我改变显示,中心就会停止工作。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我相信这就是你要找的东西。

.app-container {
  display: flex;
  flex-flow: row wrap;
  align-content: center;
  justify-content: space-around;
  align-items: center;
  min-height: 100vh;
  background-color: #4caf50;
  font-family: "Roboto", "Noto", sans-serif;
  font-size: 14px;
  font-weight: normal;
  color: rgba(0, 0, 0, 0.87);
  margin-bottom: 84px;
}

.card {
  background-color: #fff;
  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.12);
  margin: 14px;
  border-radius: 2px;
  min-width: 120px;
  max-width: 120px;
  font-family: 'Roboto', 'Noto', sans-serif;
  flex-grow: 1;
}

.card .text {
  padding: 16px 16px 25px 16px;
  font-size: 14px;
}
<div class="app-container">
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
        <p>Four</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
        <p>Four</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
      </div>
    </div>
    <div class="card">
      <div class="text">
        <p>One</p>
        <p>Two</p>
        <p>Three</p>
      </div>
    </div>
</div>