CSS Flexbox 生成器
Flexbox 是一维布局的首选:卡片行、导航栏、居中英雄区、表单。容器与 item 模型很强大,但它的十几个属性会以不太直观的方式相互作用。这个生成器省去了配置容器的猜测:选择 flex-direction、justify-content、align-items、flex-wrap 和 gap,就能得到一条干净、可直接复制到样式表的 CSS 规则。
如何生成 CSS
-
1
选择方向
选择 row、column 或反向变体。这会设置 flex-direction,即 item 排列的轴线。
-
2
设置 justify-content
选择 item 在主轴上如何分布:start、center、space-between、space-around 或 end。
-
3
设置 align-items
选择 item 在交叉轴上如何对齐:stretch、start、center 或 end。
-
4
设置 gap 和 wrap
以像素为单位添加 item 间距,并决定 item 是否换到新行。
-
5
复制 CSS
生成器输出包含所有属性的容器规则,可直接粘贴到样式表。
容器属性
| 属性 | 值 | 效果 |
|---|---|---|
flex-direction |
row / column / row-reverse / column-reverse | 主轴 |
flex-wrap |
nowrap / wrap / wrap-reverse | 是否换行 |
justify-content |
flex-start / center / flex-end / space-between / space-around / space-evenly | 主轴分布 |
align-items |
flex-start / center / flex-end / baseline / stretch | 每一行在交叉轴上的对齐 |
align-content |
同上 + space-between / space-around | 换行后多行在交叉轴上的分布 |
gap(row-gap, column-gap) |
长度 | item 之间的间距 |
Item 属性
| 属性 | 值 | 效果 |
|---|---|---|
flex-grow |
0+(无单位) | 吸收剩余空间的比例 |
flex-shrink |
0+(无单位) | 收缩的比例 |
flex-basis |
长度或 auto | grow/shrink 前的起始尺寸 |
flex |
缩写(1 1 auto 等) |
三个值一次设置 |
align-self |
auto / flex-start / center / flex-end / baseline / stretch | 为单个 item 覆盖 align-items |
order |
整数 | 视觉重排,不改 DOM |
flex: 1 小技巧
flex: 1 是 flex: 1 1 0% 的缩写。它让 item:
- 增长以填满可用空间(grow: 1)
- 必要时收缩(shrink: 1)
- 从 0 尺寸开始(basis: 0%)
要做等宽列,对每个 item 用 flex: 1 就能完美平分。对不应收缩到内容以下的侧栏,用 flex: 0 0 240px(不增长、不收缩、240px 起始)。
常见模式
居中英雄区
.hero {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}
Logo 在左、链接在右的导航栏
.nav {
display: flex;
align-items: center;
gap: 2rem;
}
.nav-links {
margin-left: auto; /* 推到右边 */
display: flex;
gap: 1rem;
}
响应式卡片行
.card-row {
display: flex;
flex-wrap: wrap;
gap: 1.5rem;
}
.card {
flex: 1 1 260px; /* 增长/收缩,260px 起最小宽度,再窄就换行 */
}
输入 + 按钮(输入弹性,按钮固定)
.field {
display: flex;
gap: 0.5rem;
}
.field input {
flex: 1;
}
.field button {
flex: 0 0 auto;
}
Flexbox vs Grid
- Flexbox:一个维度(行或列)。在 item 尺寸由内容驱动,或沿单一方向分配空间时最适用。
- Grid:两个维度(带显式轨道的行和列)。布局同时具有行和列结构时最适用。
导航栏或一摞卡片:Flexbox。多行对齐的产品卡片网格:CSS Grid。许多真实页面两者都用,页面用 Grid,组件内部用 Flexbox。
常见坑
- item 不填满容器:默认
align-items: stretch只在 item 没有固定高度时生效。设了显式高度它就保持那个尺寸。 gap不生效:检查浏览器支持。Flex gap 进来得晚;Safari <14.1 不支持。2024+ 已经普遍。- column flex 的子元素塌缩:flex column 默认
align-items: stretch,会把 item 拉伸到容器宽度。如果某个子元素设置了 width,它会突破出来。 order仅视觉:屏幕阅读器和键盘导航跟随 DOM 顺序。不要用order让内容讲得通;只用于视觉打磨。
常见问题
二维页面布局(行和列同时存在)用 Grid。一维分布(导航栏、按钮行、堆叠)用 Flexbox。Grid 单元格内部,再用 Flexbox 做内部布局。多数复杂 UI 两者都用。
因为 flex-shrink 默认是 1,但 min-width 默认是 auto,等于内容宽度。给 item 设 min-width: 0(或 min-inline-size: 0),它就能收缩到固有尺寸以下。
在容器上写 display: flex; justify-content: center; align-items: center;。两行就覆盖了绝大多数「把这个东西居中」的场景。
能,在所有现代浏览器中都能。Safari 来晚了(14.1,2021 年 4 月加入);今天所有主流浏览器都支持。能用 gap 就别再用 margin 做间距,简单多了。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
电话号码验证器
根据各国号码规划检查结构,并显示地区、类型以及E.164、国际、国内和RFC 3966格式。
随机颜色生成器
生成 1 到 50 个随机 HEX 颜色,查看色块,复制代码,并用于 CSS、测试或配色探索。
BBCode 转 HTML 转换器
将 BBCode(论坛标记)转换为干净的 HTML。支持格式标签、列表、引用、代码、图片和链接。