CSS Grid 更适合现代开发,尤其在二维布局、响应式复杂、性能敏感场景;Bootstrap 栅格基于 Flex 一维封装,强行改 display: grid 会破坏列宽、间隙和断点;真正用 Grid 应绕开 .row/.col,改用语义容器+自定义类。

CSS Grid 更适合现代开发,尤其在布局逻辑清晰、响应式需求复杂、性能敏感的场景下。它不是“更好用”,而是“更对路”——当你要做二维布局、区域重排、动态列数或语义化 HTML 时,CSS Grid 是浏览器原生给出的标准解法,而 Bootstrap 栅格(包括 v5)仍是基于 flex 的一维封装。
Bootstrap 的 .row 不能直接换成 display: grid
强行给 .row 加 display: grid 会破坏原有机制:.col 宽度依赖 flex-basis 和负外边距对齐,Grid 下这些值不被识别;g-* 间距类也失效,因为 gap 不继承负 margin 行为。结果是列宽塌缩、间隙错位、断点失效。
- 真正想用 Grid,就绕开
.row和.col,直接用语义容器 + 自定义 class - Bootstrap 5.3 虽引入实验性
.grid+.g-col-*,但它是独立工具集,不兼容老栅格体系,升级需全量替换 - 若项目已重度依赖
.col-md-6类,硬切 Grid 会导致 HTML 结构重写和样式链断裂
CSS Grid 的响应式写法比 Bootstrap 类更直观
Bootstrap 的响应式靠一堆类堆叠:col-12 col-sm-6 col-md-4 col-lg-3,实际生效的是最后匹配的规则,调试时得查断点值、看类优先级、防覆盖。而 CSS Grid 把所有逻辑收在 CSS 里:
- 用
@media (min-width: 768px)直接改grid-template-columns,行为确定、无歧义 -
repeat(auto-fit, minmax(140px, 1fr)))这种写法天然适配移动端触控区,且列数随容器自适应,不用预设“12列”思维 - 换布局只需改
grid-template-areas,HTML 完全不动——这点在仪表盘、新闻页等多端差异大的场景里省去大量 DOM 操作
移动端首屏性能差距明显
Bootstrap 的 bootstrap.min.css(gzip 后 25KB)强制加载全部断点类、伪类钩子、重置样式,哪怕你只用两列。而手写 Grid 工具类可压缩到 1.2KB 以内,且不污染 HTML:
- DOM 深度降低:去掉
.container > .row > .col三层嵌套,渲染树变浅,低端 Android 设备重绘压力小 - 无 JS 初始化开销:Grid 规则由浏览器原生解析,Bootstrap 的
data-bs-toggle等属性触发运行时监听 -
gap用rem单位可避免 viewport 缩放时像素断裂,而 Bootstrap 的g-3默认用px,需额外覆盖
display: grid ——这种分层使用,比非此即彼的替换更可持续。容易被忽略的是:Grid 的 subgrid 支持仍有限(Chrome 122+ 才稳定),涉及深层嵌套网格时,得 fallback 到 Flex 或 JavaScript 补位。


















