块级元素设为display: block是传统文档流布局,子元素按标准流排列;而display: flex则开启弹性布局,子元素沿主轴排列,支持对齐、伸缩与精细控制,适用于导航栏、居中、等高布局等现代页面设计场景。

块级元素默认的 display: block 和 display: flex 虽然都让元素以块的形式占据一整行,但它们在布局行为上有本质区别。核心在于:block 是传统文档流中的块,而 flex 是一种强大的弹性布局模式。
1. 布局方向与子元素排列
display: block 只表示该元素独占一行,并不改变其内部子元素的排列方式。子元素依然按照标准文档流排列,块级子元素换行,行内元素水平排列。
display: flex 会将容器变成一个弹性盒子,其直接子元素自动成为弹性项目,并沿主轴(默认为横向)依次排列,不再换行。
例如:- 一个 div 设置 block,内部三个 div 仍垂直堆叠
- 同一个 div 改为 flex,三个子 div 会并排显示(除非空间不足)
2. 子元素尺寸控制能力
在 block 模式下,无法直接通过父容器控制子元素的对齐、拉伸或分布。
立即学习“前端免费学习笔记(深入)”;
使用 flex 后,父容器可以通过以下属性精细控制子项:
- justify-content:控制主轴对齐(左、中、右、分散等)
- align-items:控制交叉轴对齐(上、中、下等)
- flex-grow/flex-shrink/flex-basis:定义子项如何伸缩以填充空间
3. 对子元素 display 的影响
无论子元素原本是 inline 还是 block,在 flex 容器中都会被视为弹性项目,其 float、clear 和 vertical-align 属性失效。
而普通 block 容器不会影响子元素的这些样式行为。
4. 实际应用场景对比
用 display: block 更适合静态内容结构,比如段落、标题、分组区域等不需要复杂对齐的场景。
用 display: flex 更适合需要动态对齐、等高布局、居中、空间分配的场景,比如导航栏、卡片布局、居中弹窗等。
基本上就这些。block 是基础显示类型,flex 是现代布局工具,功能更强,控制更灵活。把块级元素设为 flex,就等于开启了弹性布局模式。不复杂但容易忽略。










