Grid容器天然自包含,不存在高度塌陷;浮动在Grid中被规范废弃,不兼容grid-template-columns和gap;Grid响应式换行可控、解耦HTML结构与视觉顺序、布局树更轻量。
浮动元素一设float: left或float: right,就从文档流里“消失”,父容器高度直接变成0。你看到背景色没了、footer上浮、border-bottom不显示,不是漏写样式,是父容器真没高度可撑。
Grid 容器只要设了display: grid,立刻成为独立布局上下文,子项默认参与轨道计算,不会脱离文档流。没有塌陷,就没有clearfix、overflow: hidden、display: flow-root这些补丁链。
display: grid容器里写float: left,浏览器会静默忽略——不是兼容性问题,是规范层面废弃grid-template-columns和gap直接定义空间分配逻辑,和浮动的“漂浮-环绕”机制完全不兼容justify-content被干扰浮动元素不会自动重排,而是“撞墙掉行”。这种掉行位置在 iOS Safari 和安卓 WebView 中解析偏差明显,同一段代码在不同设备上换行点可能不同。
Grid 的auto-fit + minmax()让列数随容器宽度自动增减,行为可预测、可复现。
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr))一行解决自适应列数,无需手动计算像素或百分比误差float: left + width: 33.33%,小屏下因margin或border导致换行错乱,且无法自动回流float和width,维护成本指数级上升;Grid 只需改grid-template-columns
浮动要求左栏必须写在右栏前面,否则float: left就会错乱。这种“结构服从表现”的耦合,在大型项目中直接导致模板难复用、CMS 插入受限、组件抽取困难。
Grid 中页脚可以写在 DOM 最前面,靠grid-row: 3仍稳稳落在底部;侧边栏和主内容谁先写都不影响视觉顺序。
grid-template-areas把布局意图显式声明在容器上,子元素只需匹配grid-area名字,名字对不上就 fallback 到网格流,不会错位到不可见区域grid-template-areas字符串,前后端对齐成本低float顺序冲突而错位浮动本身不慢,但它的副作用会显著增加布局阶段开销:clear属性触发强制重排,overflow: hidden创建BFC带来额外盒模型计算,margin合并失效又催生负margin hack。
Grid 是声明式二维布局,所有位置关系由容器统一定义,子项无需参与流式计算。
float / clear / overflow: hidden / clearfix类:这些规则仍在 CSSOM 中解析、匹配、计算,即使未生效也占用时间width百分比和负margin,如width: 33.333%、margin-right: -9999px等 hackgap替代margin控制间隙,避免传统浮动中“负 margin 抵消 + 清除”带来的多轮校验virtualbox下怎么实现ubuntu20.04开机自动挂载共享文件夹?
ubuntu20.04怎么开启护眼模式? ubuntu夜间模式的设置方法
如何在Ubuntu 20.04上安装Microsoft Edge浏览器
Ubuntu20.10优麒麟触摸手势有哪些? 优麒麟系统新增手势汇总
优麒麟20.04.1发布 更新内容汇总(附下载)
Mermaid Visual Editor 如何同步可视化操作与 Mermaid 源码?