Flexbox 简介

CSS3 中引入的 Flexbox(灵活框)布局提供了一种更有效的方法,可以在容器元素(flex container)中的子元素(flex items)之间布局,对齐和分配空间。最重要的是,即使它们的尺寸未知或动态,因此称为弯曲柔性

让我们从基础开始,看看如何将容器初始化为 flex。

考虑以下标记:

<div class="flex-container">
  <div class="flex-item-1"></div>
  <div class="flex-item-2"></div>
  <div class="flex-item-3"></div>
</div>

只需使用 display: flex 即可初始化 flexbox。完成!

.flex-container {
  height: 100px;
  padding: 10px;
  background: grey;

  display: flex; // or display: inline-flex;
}

现在 Flex 容器已经准备好了,让我们玩它的 flex 项目,给它们每个宽度 25%,并在它们的父容器内水平居中对齐 flex 项目。

.flex-item-1 {
  width: 25%;
  background: green;
}

.flex-item-2 {
  width: 25%;
  background: purple;
}

.flex-item-3 {
  width: 25%;
  background: pink;
}

请注意,我特意给了 3 个孩子,每个孩子的宽度为 25%,以显示在弹性箱内移动孩子是多么容易。

现在,当我们运行上面的代码时,我们应该看到容器中的 3 个子项水平地彼此相邻。这是因为默认情况下,flexbox 具有 flex-direction: row 属性。默认情况下,弹性项目将彼此水平对齐。右边应该有一个间隙,因为孩子的总宽度没有加起来达到 100%。

现在尝试将属性 justify-content: center 添加到 flex-container

.flex-container {
  ...
  justify-content: center;
}

结果是孩子们水平居中对齐。同一属性还有其他值,例如 flex-end(右对齐),space-around(项目周围的空间相等),space-between(项目之间的空格相等)。

重要事项:其他块元素属性(如 text-align: center 等)对 flex 元素没有影响。