不应该。空清除浮动是应主动移除的技术债,因其依赖dom位置、易被压缩删除、干扰js查询;::after伪元素和display:flow-root才是更可靠现代方案,而根本问题在于布局方式过时。

不应该。空 <div> <a style="color:#f60; text-decoration:underline;" title="清除浮动" href="https://m.php.cn/zt/72877.html" target="_blank">清除浮动</a>是明确的技术债,2026 年的项目里它已不是权宜之计,而是该被主动移除的冗余结构。
<h3>为什么 <code>clear: both 加在空 <div> 上经常失效
<p>它不是“写了就起作用”,而是高度依赖 DOM 位置和渲染规则:</p>
<ul>
<li>
<code>clear: both 必须作用于「块级、且紧邻浮动元素之后的兄弟元素」——插错位置(比如插在两个浮动元素中间),只清前一个,后一个仍塌陷
<div> 被设了 <code>display: none、height: 0 但没配 overflow: hidden,它不占文档流高度,父容器照样塌陷
document.querySelectorAll('.container > div') 多出一个干扰项,容易误判子元素数量
::after 伪元素清除法比空 <div> 更可靠
<p>纯 CSS 解法,不污染 DOM,也不依赖 JS 同步:</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/shouce/1862" title="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件"><img
src="https://img.php.cn/upload/manual/000/000/010/170901721079108.gif" alt="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/shouce/1862" title="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件" class="overflowclass">使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件</a>
<p class="overflowclass">如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Andr​​oid友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Andr​​oid应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更</p>
</div>
<a rel="nofollow" href="/xiazai/shouce/1862" title="使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>
<ul>
<li>必须写 <code>content: ""(不能漏,也不能写成 content: " " 带空格)
display 推荐用 table 而非 block,尤其在 IE8/9 或 margin 折叠场景下更稳定transform、filter 或 will-change,会创建新层叠上下文,隔离 clear 行为,此时需换方案::after 默认不穿透作用域,得显式写 :host::after
display: flow-root 是最干净的现代替代方案
一行代码触发 BFC,无副作用,且已全平台支持(Chrome 58+ / Firefox 57+ / Safari 15.4+):
- 它不依赖任何额外节点或 hack,也不影响子元素定位
- 不会裁剪
position: absolute子项、box-shadow或transform溢出部分 - 和
float共存时依然有效,但真正该警惕的是:还在用float做整体布局 - 一旦父容器用了
display: flex或display: grid,子元素的float就只剩图文环绕等边缘用途,“清除”本就不该存在
真正麻烦的从来不是怎么清浮动,而是没意识到:那个空 <div> 正在替你掩盖一个更根本的问题——布局方式已经过时了。</div>










