浮动清除是修复浮动塌陷的补救手段,Flex布局则从设计上消除该需求;浮动脱离文档流导致父容器塌陷,需hack修复,而Flex天然包裹子项、支持等高对齐与响应式布局。
浮动清除和 Flex 布局不是“二选一”的操作技巧,而是两种不同代际的布局逻辑。关键不在“怎么清浮动”,而在“是否还需要清”——Flex 从设计上就消除了这个需求。
float 最初只为图文环绕而生,它让元素“浮”出标准流,导致父容器无法感知子项高度,从而塌陷。所谓“清除浮动”,其实是用各种 hack(如 overflow: hidden、伪元素 clear: both)强行把父容器“拉回来”。这不是布局能力,是修复手段。
S,维护成本高display: flex 让父容器成为弹性上下文,子元素默认在主轴(水平)排列,且始终被容器“包裹”。它不脱离文档流,所以没有塌陷问题,也不需要 clear 或 overflow 魔法。
不是所有浮动都要立刻替换,老项目中部分模块仍可维持 float,前提是它只承担简单、静态、低耦合的任务:
img { float: left; margin-right: 12px; })现代开发中,推荐以 Flex 为主干布局方式,仅在必要处保留 float —— 不是混合使用,而是分层治理:
理解区别不在于记多少清除方法,而在于看清:float 是“借位排版”,Flex 是“原生布局”。前者越用越累,后者越用越顺。