Flex 布局入门:为什么它会成为前端布局的常用方案

0 阅读

前端页面布局一直是开发中非常重要的一部分。

在很多传统写法里,水平排列、垂直居中、间距分布这些需求都需要绕不少弯。Flex 布局之所以被广泛接受,就是因为它让这些常见布局问题变得更自然了。

Flex 布局解决了什么问题

Flex 更适合处理一维布局,也就是:

  • 一行里的元素怎么排
  • 一列里的元素怎么排
  • 元素之间怎么分配剩余空间

比如导航、按钮组、表单操作栏、卡片头部,这些都非常适合用 Flex。

最基础的一步是设置 display: flex

只要一个容器设置了:

1.container {
2  display: flex;
3}

它的直接子元素就会进入 Flex 布局上下文。

这也是理解 Flex 的第一个重点:Flex 影响的是容器和直接子元素之间的关系。

主轴和交叉轴的概念

Flex 最核心的两个概念是:

  • 主轴
  • 交叉轴

默认情况下,主轴是水平方向。

也就是说,子元素默认会沿着一行排列。

如果通过:

1flex-direction: column;

改成纵向,那么主轴就会变成垂直方向。

justify-content 和 align-items 的区别

这是最容易混淆的一组属性。

  • justify-content 控制主轴对齐
  • align-items 控制交叉轴对齐

如果主轴是横向,那么:

  • justify-content 管水平分布
  • align-items 管垂直对齐

为什么垂直居中变简单了

以前做一个内容水平垂直居中,经常要借助复杂技巧。Flex 之后可以直接这样写:

1.box {
2  display: flex;
3  justify-content: center;
4  align-items: center;
5}

这也是很多人开始喜欢 Flex 的原因之一。

flex-grow 的作用

Flex 还有一个很实用的能力,就是让某些元素自动占据剩余空间。

例如:

1.content {
2  flex: 1;
3}

这样某个区域就可以根据剩余空间自动伸展,非常适合做:

  • 左右布局
  • 自适应内容区
  • 页头中间区域撑满

写在最后

Flex 布局之所以会成为前端常用方案,不是因为它万能,而是因为它非常适合解决页面里大量常见的一维布局问题。

只要你理解了主轴、交叉轴、对齐方式和伸缩逻辑,很多过去看起来麻烦的布局都会变得简单很多。