清除浮动

一、为什么要清除浮动(浮动带来的 2 大核心问题)

  1. 父级高度塌陷(你当前代码的问题)
    ·标准流盒子会自动包裹内部子元素,高度由子元素撑开;
    ·子元素加 float 后脱离标准流,父容器看不到浮动子元素,高度直接变成 0;
    ·表现:父盒子粉色背景只有固定 height:200px 那一行,无法包住第二行的第 4 个 li。
  2. 后续标准流布局错乱
    浮动元素会 “飘在标准流上方”,下方正常文档流的盒子会往上窜,被浮动元素遮挡、排版错位。
    二、清除浮动的本质
    清除浮动不是取消元素的 float 属性,而是:
    让父容器识别内部浮动子元素,自动撑开高度;
    让后面的标准流盒子不受前面浮动元素的影响,正常换行。
    三、4 种主流清除浮动方法(优缺点 + 代码)
    方法 1:父容器添加 overflow: hidden(最简单,日常开发最常用)
    原理
    触发 BFC(块级格式化上下文),BFC 容器会计算内部浮动元素高度,自动撑开父盒子。
    使用
    直接给浮动子元素的父盒子加样式:
    css
    .box {
    width: 800px;
    overflow: hidden; /* 核心清除浮动代码 /
    /
    height:200px; 建议删掉,让高度自适应 */
    background-color: pink;
    margin: 0 auto;
    }
    优点
    代码极少、书写方便、兼容性好;
    缺点
    如果子元素内容超出父盒子,超出部分会被隐藏(弹窗、下拉菜单场景不适合用)。
    方法 2:额外空 div + clear: both(基础原理教学用)
    原理
    clear: both 代表:左右两侧都不允许出现浮动元素,强制该元素换到浮动元素下方,撑起父高度。
    HTML 结构
    在父盒子最末尾加一个空 div:
    html
  • 1
  • 2
  • 3
  • 4
CSS css .clearfix { clear: both; /* 清除左右浮动 */ height: 0; } 优点 直观易懂,无内容截断问题; 缺点 额外增加无意义 HTML 标签,污染结构,项目中很少用。 方法 3:伪元素清除浮动(万能方案,企业标准写法) 原理 利用 ::after 在父盒子内部末尾生成一个看不见的行内块元素,等价于方法 2 的空 div,不新增 HTML 标签。 CSS 通用类(全局一次定义,所有父盒子都能调用) css /* 通用清除浮动类 */ .clearfix::after { content: ""; /* 必须有内容,空字符串即可 */ display: block; /* 转为块级元素,clear才生效 */ clear: both; /* 清除左右浮动 */ height: 0; /* 不占用空间 */ visibility: hidden; /* 隐藏元素 */ } .clearfix { *zoom: 1; /* 兼容老旧IE6/7,现代网页可省略 */ } 使用 给父盒子加 class: html 预览
  • 1
  • 2
  • 3
  • 4
优点 不增加多余 HTML、不会截断子元素、兼容性完美,企业项目首选; 缺点:代码稍多,需要记忆模板。 方法 4:给父盒子设置固定高度(治标不治本,不推荐) 直接写死父盒子 height,强行撑起高度: css .box { height: 400px; } 缺点 子元素高度变化、数量增减时,需要手动修改 height,维护麻烦,仅固定尺寸布局临时使用。 四、clear 属性细分讲解 clear 只能作用于块级元素,控制自身是否避让浮动: 1.clear: left:左侧不允许有浮动,只避开左浮动; 2.clear: right:右侧不允许有浮动,只避开右浮动; 3.clear: both:左右都避让浮动,开发统一用这个; 4.clear: none:默认值,不避让浮动。 五、使用场景选择建议 1.普通列表、商品卡片、导航栏(无溢出内容):用 overflow: hidden; 2.包含下拉、弹窗、提示框(子元素会超出父盒子):用伪元素 .clearfix; 3.课堂理解原理:空 div + clear: both; 4.固定不变的盒子(极少用):固定 height。 六、结合你当前代码完整修复示例(伪元素万能版) html
  • 1
  • 2
  • 3
  • 4
修复后粉色父背景会完整包裹两行 li,不再出现高度塌陷。
posted @ 2026-07-09 21:37  yzzz123  阅读(19)  评论(0)    收藏  举报