CSS Flexbox Playground

可视化调整 Flexbox 属性,实时预览布局并生成代码。

主轴方向
换行
主轴对齐
交叉轴单行对齐
交叉轴多行对齐
Preview Container
CSS Output

                        

CSS Flexbox 工作原理

Flexbox (Flexible Box Layout) 是一种一维的 CSS 布局模型,旨在提供一种更高效的方式来布局、对齐和分配容器中项目的空间,即使它们的大小未知或动态变化。

它的核心概念包含两个轴:主轴 (Main Axis) 和 交叉轴 (Cross Axis)。flex-direction 决定主轴的方向,而 justify-content 控制主轴上的对齐,align-items 控制交叉轴上的对齐。

属性详解

justify-content

定义项目在主轴(通常是水平的)上的对齐方式。

  • flex-start: 起点对齐 (默认)
  • center: 居中对齐
  • space-between: 两端对齐
  • space-around: 环绕对齐

align-items

定义项目在交叉轴(通常是垂直的)上的对齐方式。

  • stretch: 拉伸填满 (默认)
  • center: 居中对齐
  • flex-start: 起点对齐
  • baseline: 基线对齐

flex-direction

决定主轴的方向(项目排列方向)。

  • row: 水平从左到右 (默认)
  • column: 垂直从上到下
  • row-reverse: 水平反向

flex-wrap

决定项目是否换行。

  • nowrap: 不换行 (默认)
  • wrap: 换行

常见问题 (FAQ)

Flexbox 和 Grid 有什么区别? ▼
Flexbox 是一维布局(处理行或列),适合组件和小规模布局。CSS Grid 是二维布局(同时处理行和列),适合整体页面框架布局。两者常结合使用。
如何让 Flex 项目垂直居中? ▼
在父容器上设置 display: flex; 和 align-items: center; 即可。如果想完全居中(水平+垂直),再加一个 justify-content: center;。
justify-content: space-between 和 space-around 区别? ▼
Space-between 让两端项目贴边,中间项目间距相等。Space-around 让每个项目两侧间距相等,所以首尾项目与边缘的距离是项目间距离的一半。
gap 属性兼容性如何? ▼
如今所有现代浏览器(Chrome, Firefox, Safari, Edge)都很好地支持 Flexbox 的 gap 属性。老旧浏览器可能需要 margin 替代。
为什么 align-items 不起作用? ▼
可能父容器没有明确的高度。如果父容器高度由子元素撑开,align-items: center 就看不出效果(因为已经占满了)。试着给父容器定一个高度。
row-reverse 会改变 DOM 顺序吗? ▼
不会。它只改变视觉上的排列顺序。屏幕阅读器等辅助技术通常仍按 DOM 顺序读取。
Flexbox 用于什么场景最好? ▼
导航栏、卡片列表、垂直居中、自适应宽度的输入框组、以及任何需要一维流式布局的场景。
align-content vs align-items? ▼
align-items 控制单行中项目的对齐。align-content 控制多行(当 flex-wrap: wrap 时)之间的行距对齐。如果是单行,align-content 无效。

更多免费实用工具