CSS Flexbox 生成器,免费

可视化构建 Flexbox 布局 · 调整容器和项目属性,实时预览,复制 CSS。

容器属性

实时预览

生成的 CSS

使用方法

  1. 设置容器属性:配置 flex 容器 · flex-direction、justify-content、align-items、flex-wrap 和 gap。
  2. 添加并配置 flex 项目:增加子项目并分别设置每个项目的 flex-grow、flex-shrink、flex-basis、align-self 和 order。
  3. 复制 CSS:获取容器和项目的完整 CSS,可直接在项目中使用。

为什么使用 Flexbox 生成器?

Flexbox 是 CSS 一维布局的核心工具 · 以行或列方式对齐元素,并提供强大的分布和对齐控制。但其属性众多且相互关系复杂:justify-content 与 align-items、flex-grow 与 flex-basis、主轴与交叉轴。此交互式生成器在您修改每个属性时提供即时视觉反馈,是学习 Flexbox 并获得符合您布局所需 CSS 的最快方式。

功能特性

常见问题

justify-content 和 align-items 有什么区别?

justify-content 沿主轴(默认水平方向)分布项目。align-items 沿交叉轴(默认垂直方向)对齐项目。当 flex-direction 为 column 时,两条轴互换 · justify-content 变为垂直方向,align-items 变为水平方向。

何时使用 Flexbox,何时使用 CSS Grid?

对一维布局使用 Flexbox · 一行按钮、导航栏、需要自动换行的卡片列表。对二维布局使用 CSS Grid,即需要同时控制行和列的场景,如整页布局或复杂卡片网格。

flex: 1 是什么意思?

flex: 1 是 flex-grow: 1; flex-shrink: 1; flex-basis: 0% 的简写。它告诉项目增长以填充可用空间、必要时收缩,并在分配空间前从零开始。所有 flex: 1 的项目会均等地共享空间。

Flexbox 的真正作用

Flexbox(Flexible Box Layout)是一种 CSS 布局模型,专为在一维方向(行或列)分配空间和对齐项目而设计。它引入了决定一切行为的两个核心概念:主轴(项目流动的主要方向,默认水平)和交叉轴(垂直于主轴,默认垂直)。一旦你内化了主轴与交叉轴,每个 Flexbox 属性都对应其中一个:justify-content 作用于主轴,align-items 作用于交叉轴,flex-direction 交换哪个轴是哪个。

Flexbox 解决了 1998 年至 2014 年困扰 web 开发者的一系列布局问题。在 Flexbox 之前,垂直居中元素需要黑客(display: table-cell、负边距、带 translate 变换的 position: absolute)。等高列需要带背景图的「假列」技巧。粘性页脚需要精确的像素计算。Flexbox 让所有这些变得微不足道:单行声明替代数十年的 CSS 变通方法。权衡是 Flexbox 是一维的;对于二维布局(同时行 AND 列),CSS Grid(2017 年发布)是更好的工具。

Flexbox 属性清晰地分为两组:容器属性(应用于父级:display: flexflex-directionflex-wrapjustify-contentalign-itemsalign-contentgap)和项目属性(应用于子级:flex-growflex-shrinkflex-basisalign-selforder)。容器属性控制布局模式;项目属性控制个别例外。该生成器展示这两组,让你无需编写代码即可实验它们如何交互。

本工具的幕后运作

实时预览是带有示例子元素的 flex 容器。当你通过下拉菜单和输入更改容器属性(flex-direction、justify-content 等)时,JavaScript 更新预览容器的内联样式,浏览器重新渲染布局。预览是浏览器实际的 Flexbox 实现,而非 JavaScript 模拟:你看到的正是你的 CSS 在真实页面上将产生的效果。

按项目控件让你单独调整每个子元素。你可以添加或删除项目,设置它们的 flex-grow、flex-shrink、flex-basis、align-self 和 order 值,并查看容器如何相应地重新分配空间。视觉轴指示器显示当前配置的主轴和交叉轴,强化心理模型。属性是真正的 CSS,你可以直接复制到样式表中,无需转译或框架前缀。

生成的 CSS 面板随每次交互更新,生成两条 CSS 规则:一条用于容器(带所选 flex 属性),一条用于项目。点击「复制 CSS」,规则被写入你的剪贴板。该工具本身从不发出网络请求;预览渲染、代码生成和剪贴板写入都在你设备上的 JavaScript 中发生。刷新页面,除非你先复制了 CSS,否则你的配置就消失了。

Flexbox 简史

真实世界的工作流

常见陷阱及其含义

隐私:一切都在你的浏览器中运行

CSS 学习和布局工具有两种风格:运行客户端 JavaScript 的简单 HTML 页面(私密、快速、无需设置)和带保存项目的云编辑器(协作但有隐私权衡)。这个工具是第一种。你的属性选择、你的项目配置、你生成的 CSS:所有都保留在你的浏览器会话中。刷新页面,状态消失,除非你先复制了 CSS。

这里隐私利害关系较低,因为 Flexbox 配置很少包含敏感信息。尽管如此,缺乏分析很重要:你可以自由实验,而不必记录你的试错过程。在课堂或企业培训环境中特别有用,让学生或受训者在第三方平台上注册账户是一个摩擦点。该工具是一个没有后端的单一静态页面,可在任何浏览器中使用,包括锁定的企业机器。

什么时候另一个工具是正确选择

更多常见问题

flex 简写究竟意味着什么?

flex 简写一次设置三个属性:flex: <grow> <shrink> <basis>。常见值:flex: 1(1, 1, 0%)用于等分配项目,flex: 0 0 auto 用于固定大小项目,flex: 1 1 250px 用于从 250px 起点生长/缩小的项目。当只提供一个或两个值时,简写具有特殊的初始值;显式三值形式避免意外。

如何让项目换行到多行?

在容器上设置 flex-wrap: wrap。当项目无法适应时溢出到新行。结合项目上的 flex-basis 控制每行适合多少:flex: 1 1 200px 创建一个响应式网格,其中项目至少 200px,生长以填充剩余空间,并在窄屏上换行到新行。容器 gap 属性处理换行的行和项目之间的间距。

我可以反转 flex 项目的顺序吗?

可以,多种方式。容器级:flex-direction: row-reverse(或 column-reverse)反转所有项目的顺序。项目级:order 属性分配数字权重;数字较低的项目先出现。默认顺序为 0;在一个项目上设置 order: -1 将其移到前面。可访问性说明:视觉重新排序不影响 Tab 顺序或屏幕阅读器读取顺序,这可能让键盘和辅助技术用户感到困惑。谨慎使用。

align-items 和 align-content 有什么区别?

align-items 沿交叉轴在其行(或列)内对齐项目。align-content 在容器内对齐行(或列)本身,仅当有多个换行的行时才有意义。如果 flex-wrap 设置为 nowrap(默认),align-content 没有效果,因为只有一行。单行对齐使用 align-items,多行对齐使用 align-content。

如何用 Flexbox 居中单个元素?

经典答案:父容器使用 display: flex; justify-content: center; align-items: center;。这将子元素水平和垂直居中。仅水平:仅使用 justify-content: center。仅垂直:仅使用 align-items: center。如果需要在未知高度的父级内居中,向父级添加 min-height: 100vh,使其有垂直空间居中。整个模式替代了 20 年的 CSS 居中变通方法。

为什么我的文本截断在 flex 容器中不起作用?

因为 flex 项目上的 min-width: auto 默认值。Text-overflow: ellipsis 需要元素实际溢出其容器;默认最小宽度设置为内容的固有大小时,元素永远不会溢出。修复:向包含截断文本的 flex 项目添加 min-width: 0。这是最常见的 Flexbox bug Stack Overflow 答案:搜索「flex text-overflow ellipsis not working」返回成千上万个版本的这个确切答案。

相关工具