惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
Cisco Talos Blog
Cisco Talos Blog
Y
Y Combinator Blog
罗磊的独立博客
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
J
Java Code Geeks
C
CXSECURITY Database RSS Feed - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 聂微东
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Privacy & Cybersecurity Law Blog
L
LangChain Blog
L
LINUX DO - 热门话题
Hugging Face - Blog
Hugging Face - Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Privacy International News Feed
F
Full Disclosure
S
Schneier on Security
T
Tenable Blog
量子位
NISL@THU
NISL@THU
Latest news
Latest news
V
Visual Studio Blog
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
博客园_首页
K
Kaspersky official blog
L
Lohrmann on Cybersecurity
美团技术团队
P
Proofpoint News Feed
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
The Hacker News
The Hacker News
AWS News Blog
AWS News Blog
S
Securelist
The Register - Security
The Register - Security
G
GRAHAM CLULEY
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta
C
Cisco Blogs

博客园 - 华腾智算

子系统框架存档20260717 响应式后台管理系统 smart-water 融合多端协同总体架构设计方案 现代前端架构的核心思想 极简设计框架 跨平台弹性栅格理念设计 多端统一设计理念 一套规则,多端伸缩的UI设计理念 现代栅格设计之一 智慧水利顶层设计之何为“水利矩阵”与“数字孪生” 从古典Web到AI原生超级应用:团队学习路线与未来架构蓝图 最新架构设计 前端代码规范 v1.0 树型菜单全功能代码 最终最佳实践操作文档:统信UOS VSCode 全栈开发环境配置(基于 Chromium 浏览器) vscode-setting.json配置 VSCode 全栈开发环境初始化设置与跨平台配置指南(Windows/macOS 通用) VScode完整的跨平台适配方案 完整的跨平台 settings.json(飞雪飘鸿优化版) 数字孪生破局之道 完整的GLFW应用程序示例 雏形 程序方向 web三维 第一步,第一行,开始 绘制三角形 明确目标 从文本文件加载指令到模拟内存中,并显示前11个内存单元的内容 使用Python的pydub库播放音乐并打印二进制数据 python的音频处理 python加密与解密 mainwindows.cpp 十进制数213转换为二进制数的完整过程,使用除2取余法(也称为“重复除法法”) 二进制数 \((-1101.101)_2\) 转换为十进制数 - 华腾智算
设计中的栅格系统
华腾智算 · 2026-07-16 · via 博客园 - 华腾智算

在当下的网页设计,特别是面向大型系统(如后台管理、数据看板、SaaS 平台)时,栅格系统的选择已经从“选多少列”转向了“如何让布局更灵活、更贴近内容”。我会结合你提的两个问题,梳理一下传统做法和发展趋势。


一、大型系统,一般用多少栅格合适?

最常用的推荐:24 栅格。
对于信息密度高、组件种类多的大型系统,24 列已经成为事实标准,比如 Ant Design、Element Plus、Arco Design 等企业级组件库都默认使用 24 栅格。原因是:

  • 划分粒度更细,适配更多布局
    24 可以被 2、3、4、6、8、12、24 整除,意味着能轻松实现 1/2、1/3、1/4、1/6、1/8、1/12 等常见的分栏比例,几乎不需要嵌套就能完成复杂排版。
    相比之下,经典的 12 栅格虽然也能靠嵌套实现类似效果,但在多级嵌套时会导致标记冗余、对齐困难。

  • 直接满足高分辨率大屏
    后台系统常在大屏幕上使用,24 列在 1440px 或更宽的画布上,单列宽度大约 60px(含间距),依然是比较舒适的操作和阅读宽度。
    如果只用 12 列,单列过宽,灵活度会明显下降。

  • 一些系统也会搭配 16 栅格
    像 Material Design 的布局网格更多是弹性列 + 固定间距,并不强调固定列数。但部分桌面端工具或网站(如某些编辑器)会用 16 列,适合更强调两侧留白、中间内容居中的设计。

结论:大型系统首选 24 栅格作为底层布局约束,再结合内容特性决定具体使用哪些比例。
这更多是一种“设计约定”,而非代码强制的固定数值。


二、以前的栅格系统(传统做法)

  1. 固定宽度栅格时代
    典型代表:960 Grid System。将页面宽度固定为 960px,分为 12 或 16 列,通过 float 实现布局。
    那个年代屏幕分辨率相对统一,设计追求像素级精确控制,但完全不具备响应式能力。

  2. 响应式百分比栅格
    Bootstrap 2/3 是其代表,将 12 列基于百分比,通过媒体查询在不同断点切换类名(col-md-6)。本质仍是固定列数的浮动栅格,但能适配不同屏幕。
    这类系统的痛点在于:列数写死,嵌套时比例计算复杂,垂直方向的对齐很难优雅处理。

  3. Flexbox 辅助的改进栅格
    Bootstrap 4 开始用 Flexbox 重写了栅格,解决了等高列、垂直居中等问题,但依然保持 12 列的思维,并通过 flex-basis 百分比实现。扩展性比浮动好,但布局仍然是基于“行→列”的线性结构。

传统栅格的共同特征:列数固定、依赖于行容器、难以处理复杂二维布局,且间距和对齐高度依赖外层类名。


三、现在的发展趋势(核心变化)

从“栅格系统”到“智能布局”,现代网页设计的趋势可以总结为几个关键转变:

1. 从“固定列数”到“内置弹性网格”——CSS Grid 的冲击

CSS Grid Layout 的普及彻底改变了栅格的使用方式。我们不再需要用一个全局的 12 或 24 列来约束所有区域,而是按组件或区域定义各自的网格

  • repeat(auto-fill, minmax(200px, 1fr)) 可以自动计算列数,内容自己决定断行。
  • grid-template-columns: 1fr 2fr 直接描述比例,不再受限于固定的分母。
    这意味着栅格列数这个数字本身的权重正在下降,更重要的是定义最小尺寸、最大尺寸和弹性行为。

2. 内在网页设计(Intrinsic Web Design)

Jen Simmons 提出的这个概念强调:布局应该由内容本身的特性可用空间来决定,而不是让内容去适配预先分好的格子。
典型的落地方式:

  • 使用 minmax 控制列的最小/最大宽度
  • 利用 auto-fit / auto-fill 让卡片网格自动换行
  • 不再依赖全局固定的断点去“切换列数”,而是让布局自然流畅地适应容器。

3. 子网格(Subgrid)让嵌套对齐成为可能

传统栅格的嵌套布局中,内部的网格很难和外部网格的轨道保持对齐(比如卡片内文字基线对齐外层网格线)。CSS 的 subgrid 允许子元素继承父网格的轨道定义,这让大型系统的复杂对齐逻辑变得简单且健壮
这比过去硬套 24 列去试图对齐要灵活得多。

4. 容器查询(Container Queries)带来组件级响应

过去媒体查询只能基于视口大小切换栅格断点,现在容器查询允许组件根据自身容器的宽度改变内部栅格列数
比如一个仪表板卡片组件,放在宽栏时显示 4 列数据,放在窄栏时自动变为 2 列——不需要依赖全局类名。这与固定栅格系统的“全局断点”思维完全不同。

5. 从“栅格系统”到“空间系统”

现代设计系统(如 Figma 中的 Layout Grid + Spacing Token)更倾向于定义一套间距和列关系的规则,而不是交付一个死板的 24 列框架。

  • 常用做法:把页面分为固定边距(Margin)、弹性列(Columns,数量可变)和固定槽(Gutter)。
  • 设计工具里即使仍然显示 12 或 24 列,实际上只是辅助线,代码实现时可能完全靠 CSS Grid 动态生成。
  • 对于大型系统,很多团队会将 24 列作为设计侧的“高保真参考”,但在前端用更灵活的 Grid 布局去还原,而不是照搬旧式栅格类名。

6. 趋势小结

  • 不再纠结于到底用 12、16 还是 24,而是根据内容特性定制网格轨道。
  • 固定网格 → 弹性/自适应网格,由 minmaxauto-fit 实现。
  • 全局布局 → 区域独立网格,一块区域可以是 2 列,另一块可以是 5 列,不需要强统一。
  • 嵌套错位 → subgrid 完美对齐
  • 视口响应 → 容器响应,组件自己决定列数。

四、对大型系统的现实建议

尽管趋势是“去固定列数化”,但在企业级大型系统中,24 栅格依然是一个高效的设计约束,理由如下:

  • 它让设计师和开发者的沟通成本极低(工具内置、组件库配套)。
  • 对于表单、表格、数据详情页等高度结构化页面,24 栅格足够覆盖绝大部分场景。
  • 可以在整体页面框架层沿用 24 列,而在局部卡片、仪表板小部件等区域,大胆使用 CSS Grid 的动态列数,两者结合。

所以,更务实的方案是:用 24 栅格作为页面级骨架,用 CSS Grid 的内在布局能力去赋能每一个局部组件。 这样既保留了大型系统对统一性和开发效率的要求,也拥抱了现代布局的灵活性和可维护性。