已被 W3C 废弃,HTML5 不支持,现代浏览器会忽略,校验报错;真正有效的是 CSS 的 clear: both(加在浮动后的块级兄弟元素上)或 display: flow-root 等 BFC 方案。

br 标签的 clear 属性不能用于“重置浮动流”——它早已被 W3C 废弃,HTML5 中不支持,现代项目中不应使用。
这不是一个可用的清除方案,而是一个需要主动规避的历史遗留写法。
br clear="both" 为什么失效或不可靠?
-
clear属性在 HTML 标签上(如<br clear="both">)是 HTML 4 的 hack,W3C 在 HTML5 中彻底移除了该属性 - 新版 Safari、Edge(实验性渲染模式)、以及严格 doctype 下的 Chrome 会直接忽略该属性,布局突然错乱
- 校验工具(如 W3C Validator)报错:
Attribute clear not allowed on element br - 它不是 CSS 清除机制,无法用 CSS 覆盖或调试,一旦写死就难定位、难修改
真正起作用的 clear 必须用在 CSS 中,且加给「紧接在浮动之后的块级元素」
- ✅ 正确用法:给浮动后的
<p></p>或<div> 加 <code>clear: both - ❌ 错误用法:加给浮动元素自己(
float: left元素设clear: both无意义) - ❌ 错误用法:加给父容器(除非同时触发 BFC,否则无效)
- ⚠️ 注意:如果后续是
<span></span>这类 inline 元素,得先display: block才能生效
示例:
<div class="wrap"> <img src="a.jpg" style="max-width:90%" alt="如何在CSS中通过br clear属性快速重置浮动流?" > <p style="clear: both">这段文字会从图片下方开始</p> </div>
当前推荐的清除方式只有两类,且都绕不开 CSS
伪元素 clearfix(主流、无额外标签)
.clearfix::after { content: ""; display: block; clear: both; height: 0; overflow: hidden; }
IE6/7 需补.clearfix { zoom: 1; }触发 BFC(更现代、语义清晰)
给浮动父容器加overflow: hidden、display: flow-root(推荐)、或display: flex
注意:overflow: hidden会裁剪溢出内容;display: flow-root是专为此设计的,无副作用
display: flow-root 是目前最干净的解法,但 IE 完全不支持;若需兼容旧浏览器,clearfix 仍是事实标准。
立即学习“前端免费学习笔记(深入)”;
真正容易被忽略的点是:清除浮动的本质不是“把浮动拉回来”,而是让后续内容避开浮动区域,或让父容器重新包裹浮动子项——这两者逻辑完全不同,选错方案会导致高度塌陷或布局断裂。


















