清除浮动的核心是解决父容器高度塌陷,主流推荐伪元素法(.clearfix::after),空标签法虽兼容但污染HTML;overflow、table等方案各有局限,Flex/Grid则根本规避该问题。
清除浮动的核心是解决父容器高度塌陷问题,常见方法有多种,但真正实用且现代的主要是伪元素法和空标签法。两者在原理、维护性和兼容性上差异明显。
在浮动元素末尾插入一个空的 ,并设置 .clear { clear: both; height: 0; overflow: hidden; }。
标签自带 clear 行为,但同样违背结构与样式分离原则,不建议用给浮动容器添加 clearfix 类,并用 ::after 生成隐藏块级元素来清除浮动:
.clearfix::after {
content: "";
display: block;
clear: both;
height: 0;
visibility: hidden;
}
.clearfix {
*zoom: 1; /* 兼容 IE6/7 */
}content 必须存在(哪怕为空),否则伪元素不渲染;display: block 是触发清除的前提zoom: 1 触发 hasLayout,现代项目可省略除了上述两种,还有几种辅助或替代方式:
margin: 0 auto 失效)或改变盒模型行为新项目直接用伪元素 clearfix;老项目维护或需强兼容 IE8 及以下,可保留空标签法作为兜底;若已全面使用 Flex/Grid,就无需考虑清除浮动了。