overflow: hidden 并非真正清除浮动,而是通过触发BFC使父容器包含浮动元素、解决高度塌陷;但会裁剪溢出内容,且在Flex/Grid中失效;推荐用display: flow-root替代,语义清晰无副作用,但IE不支持。
overflow
: hidden 为什么能“清除”浮动
它其实不真
清除浮动
,只是触发了
(块级格式化上下文),让容器重新计算高度,把浮动元素包进来。这不是修复浮动本身,而是绕过它带来的高度塌陷问题。
常见错误现象:
、文字从图片下方“钻出来”、后续元素叠在浮动图上。
只对设置了
且值不为
的块级元素生效(
/
/
都行)
会裁剪溢出内容——如果图片加了
或负
,可能被意外截掉
在 Flex 或 Grid 容器里设
不会触发 BFC,这招就失效
替代方案:用 display: flow-root 更干净
是专为解决这个问题设计的,语义明确、无副作用,现代浏览器支持良好(Chrome 64+、Firefox 59+、Safari 15.4+)。
使用场景:需要兼容较新浏览器,又不想担心里外溢出风险。
立即学习
“
前端免费学习笔记(深入)
”;
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
比
更安全——不裁剪、不隐藏滚动条、不影响
等其他属性
IE 完全不支持,如需兼容 IE11,仍得回退到
或伪元素清除法
不能和
混用,必须是块级上下文
伪元素清除法(::after)还值得用吗
值得,尤其当项目要兼容老版本 Safari 或部分安卓 WebView 时——它们对
支持不稳定,而伪元素法几乎零兼容性问题。
实操建议:写成可复用的 class,避免每次重复写。
必须同时设置
、
(或
)、
别漏掉
或
,否则可能撑开多余空白
用
比
更稳妥,能避免某些旧版内核下 margin 折叠异常
图片本身溢出容器怎么办
浮动只是让图片“脱离文档流”,真正溢出往往是图片原始尺寸大于容器,或没设
。
常见错误:以为清除了浮动就万事大吉,结果图片还是撑破盒子。
给图片加
和
或
,浮动本身已不推荐,应改用
或
控制位置
对
有效,但对背景图要用
,别混用
浮动清除的本质是让父容器“看见”浮动元素的高度。很多人卡在以为只要加了
就一劳永逸,却忽略了图片自身尺寸、容器布局模式、以及目标浏览器的实际支持边界。
BFC父容器高度为0overflowvisibleautohiddenscrolloverflow: hiddentransformmarginoverflowdisplay: flow-rootoverflow: hiddenclip-pathoverflow: hiddendisplay: inlineflow-rootcontent: ""display: tableblockclear: bothheight: 0font-size: 0display: tableblockmax-widthmax-width: 100%,这是响应式基础
如果容器用了flex gridalign-selfjustify-selfobject-fitbackground-sizeoverflow