CSS Flexbox 布局生成器

可视化调节弹性盒子的方向与对齐,实时预览并生成可直接复制的 flex 布局代码,全部在浏览器本地完成。

使用方法

CSS Flexbox 布局生成器的用法很简单,所见即所得,不写一行手敲代码也能拿到完整 flex 布局。

第一步:在「主轴方向」里选 row(水平排列)或 column(垂直排列)。第二步:在「主轴对齐」选 center,让子项在主轴居中;需要两端贴边就选 space-between。第三步:在「间距 gap」选 12px,子项之间留出统一空隙。第四步:设「子项数量」为 4,上方预览会立刻画出 4 个方块,下方生成对应的 CSS 代码,点「复制代码」就能贴进项目。改任意一项都会实时更新预览与代码。

能解决什么

这个 CSS Flexbox 布局生成器主要解决「调布局靠试错」的低效。第一,快速对齐:水平居中、垂直居中、两端分布这类经典需求,选一下就出代码,不用再背 justify-content 和 align-items 的取值。第二,处理换行:内容一行放不下时,用 flex-wrap 让子项自动折行,并用 align-content 控制多行的间距。第三,统一间距:用 gap 取代 margin 塌陷的老写法,子项之间留多大空隙一目了然。第四,产出可复制代码:把生成的 .box 规则直接贴进样式表,和团队现有的 CSS 变量、类名体系对接即可。

本页只生成容器级 flex 布局代码,不处理子项自身的 flex-grow/shrink 权重分配、不生成 Grid 网格代码、也不做响应式断点自动生成;这些请用下方的兄弟工具或相关链接分别处理。

原理和变量

CSS Flexbox 布局生成器遵循 W3C 的 CSS Flexible Box Layout Module Level 1,全部用浏览器原生渲染,不引入任何框架。

第一,容器设 display:flex 后,它的直接子元素变成「弹性项」,沿一条主轴排列,主轴方向由 flex-direction 决定(row 是水平、column 是垂直)。第二,justify-content 分配主轴上的剩余空间:flex-start 靠起点、center 居中、space-between 两端贴边中间均分、space-around/space-evenly 是不同均分策略,本质是对自由空间做不同比例的切分。第三,align-items 决定单行内子项在交叉轴上的对齐,stretch 会拉伸到容器高度。第四,gap 来自 CSS Box 模型的对齐规范,给相邻弹性项之间插入固定空隙,等价于过去用 margin 但不会出现首尾多余边距的写法。第五,多行时由 flex-wrap:wrap 触发,align-content 接管多行在交叉轴上的分布。

完整示例

用页面默认值演示,生成的代码与上方预览、下方对照表一致(数值仅作演示)。

选 row、center、gap 12px、子项 4 个,生成的规则是 display:flex; flex-direction:row; flex-wrap:nowrap; justify-content:center; align-items:center; align-content:stretch; gap:12px;。预览里 4 个方块在主轴水平居中、交叉轴垂直居中、彼此间隔 12 像素。把 justify-content 改成 space-between,四个方块会分别贴到起点、终点和中间均分;把 gap 改成 24px,空隙会明显变大。

输入范围与对照表

每个 flex 属性都有固定的取值集合,不能随意填。下面是属性与取值对照表,前 12 行直接展开,点「加载更多」看剩余的简写属性;表格可导出 CSV、JSON,也能复制成制表符文本。

属性可选值作用
flex-directionrow / row-reverse / column / column-reverse主轴方向,决定子项排列的主轴
flex-wrapnowrap / wrap / wrap-reverse是否换行,内容超出时如何折行
justify-contentflex-start / flex-end / center / space-between / space-around / space-evenly主轴对齐,分配主轴上的剩余空间
align-itemsstretch / flex-start / flex-end / center / baseline交叉轴对齐,单行内子项的对齐
align-contentstretch / flex-start / flex-end / center / space-between / space-around多行在交叉轴上的对齐,仅换行后生效
gap0px / 4px / 8px / 12px / 16px / 24px子项间距,替代 margin 塌陷的经典写法
flex-grow0 / 1 / 2放大比例,剩余空间按此分配
flex-shrink0 / 1缩小比例,空间不足时按此收缩
flex-basisauto / 0 / 100px / 50%主轴基准尺寸,优先于 width/height
order0 / 1 / -1排列次序,数值小的在前
align-selfauto / flex-start / flex-end / center / stretch单行内单独覆盖 align-items
flex0 1 auto / 1 1 0 / 0 0 autogrow shrink basis 的简写

结果边界和舍入

CSS Flexbox 布局生成器的取值都是离散枚举,没有连续数值,所以谈不上四舍五入,但要注意几个边界。align-content 只有在 flex-wrap:wrap 产生多行时才生效,单行时改它没有任何效果,这是规范明确的行为而不是工具bug。stretch 对齐要求子项自身没有固定交叉轴尺寸,若子项写了固定高度,stretch 会被忽略。

gap 的取值建议用 4 的倍数(4/8/12/16/24),这是主流设计系统的间距档位,能保证视觉节奏一致;gap 不支持负值,也不支持百分比在旧浏览器里。子项数量限制 1 到 20,是为了预览不撑破页面,生成代码本身对子项数量没有上限。子项内容过长时会按 flex 规则压缩或换行,具体行为由各自 flex-shrink 决定,本工具不强制。

常见问题

为什么改了 align-content 没变化?

align-content 只在容器换行产生多行后才起作用。如果 flex-wrap 是 nowrap,子项永远一行,align-content 不起效;把它改成 wrap 再调即可看到效果。

水平和垂直居中要设哪两个?

主轴用 justify-content:center,交叉轴用 align-items:center。两者分别管不同方向,只设一个只能在一个方向上居中,这是 Flexbox 最常见的新手误区。

gap 和 margin 有什么区别?

gap 只在弹性项之间插入空隙,首尾不会多出边距,也不会出现 margin 塌陷;margin 需要手动处理首尾和负边距。新项目优先用 gap,代码更干净。

生成的代码能直接用吗?

可以直接用。本工具输出标准 flex 规则,复制后贴进你的样式表即可,但请按你项目的命名规范把 .box 改成实际类名,避免和其他样式冲突。

子项太多会换行吗?

取决于 flex-wrap:选 wrap 时一行放不下会折行,选 nowrap 时会压缩或溢出。需要稳定换行请选 wrap,并用 align-content 控制多行间距。

space-between 和 space-around 差在哪?

space-between 把剩余空间全部分配到项与项之间,首尾贴边;space-around 每项两侧都留一半空隙,所以首尾空隙是中间的一半;space-evenly 则所有空隙完全相等。

主轴方向影响对齐属性吗?

会影响。justify-content 永远管主轴、align-items 永远管交叉轴;当 flex-direction 从 row 改成 column,水平和垂直的含义互换,同一组取值的视觉效果也会跟着换方向。

结果能导出吗?

可以。「复制代码」复制生成的 CSS;对照表支持导出 CSV(带 BOM)、JSON(不带 BOM)以及复制制表符文本,方便整理取值清单。

相关工具

颜色选择器:给弹性项挑配色。 调色工具:生成协调的色板。 互补色颜色查询:查对比色。 邻近色颜色方案生成器:做邻近配色。 十六进制颜色表:查十六进制色值。 三角色颜色方案生成器:做三角配色。 Transparent 颜色计算器:算带透明度的颜色。