清除浮动的4种方式

清除浮动的4种方式为什么要清除浮动 清除浮动主要是为了解决 父元素因为子级元素浮动引起的内部高度为 0 的问题如下 给父盒子设置一个 boder 内部放两个盒子一个 big 一个 small 未给 big 和 small 设置浮动 则他们会默认撑开父盒子 当我给内部两个盒子加上 float 属性的时候底部的 footer 盒子就会顶上来 然后父盒子因为没设置高度 变成一条线 big 和 small 已经浮动了清除浮动的方法 最常用的 4 种 一 额外标签法 给谁清除浮动 就在其后额外添加一个空白标签 优点 通俗易懂 书写方便

为什么要清除浮动?


清除浮动的方法(最常用的4种)


一、 额外标签法: 给谁清除浮动,就在其后额外添加一个空白标签 。
优点: 通俗易懂,书写方便。(不推荐使用
缺点: 添加许多无意义的标签,结构化比较差。




给元素small清除浮动(在small后添加一个空白标签clear(类名可以随意),设置clear:both;即可)

<div class="fahter"> <div class="big">big</div> <div class="small">small</div> <div class="clear">额外标签法</div> </div> 
.clear{ 
      clear:both; } 

二、 父级添加overflow方法: 可以通过触发BFC的方式,实现清楚浮动效果。必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度

优点: 简单、代码少、浏览器支持好

缺点: 内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素。不能和position配合使用,因为超出的尺寸的会被隐藏。

.fahter{ 
      width: 400px; border: 1px solid deeppink; overflow: hidden; } 

注意: 别加错位置,是给父亲加(并不是所有的浮动都需要清除,谁影响布局,才清除谁。)

三、使用after伪元素清除浮动: :after方式为空元素的升级版,好处是不用单独加标签了。IE8以上和非IE浏览器才支持:after,,zoom(IE专有属性)可解决ie6,ie7浮动问题(较常用推荐

优点: 符合闭合浮动思想,结构语义化正确,不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)

缺点: 由于IE6-7不支持:after,使用zoom:1
在这里插入图片描述

.clearfix:after{ 
     /*伪元素是行内元素 正常浏览器清除浮动方法*/ content: ""; display: block; height: 0; clear:both; visibility: hidden; } .clearfix{ 
      *zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/ } 
    
"father clearfix">
"big">big
"small">small
"footer">

四、使用before和after双伪元素清除浮动:较常用推荐
在这里插入图片描述

{ 
      border: 1px solid black; *zoom: 1; } .clearfix:after,.clearfix:before{ 
      content: ""; display: block; clear: both; } .big ,.small{ 
      width: 200px; height: 200px; float: left; } .big{ 
      background-color: red; } .small{ 
      background-color: blue; } 
    
"father clearfix">
"big">big
"small">small
"footer">

优点: 代码更简洁

补充


父级div定义 height: 父级div手动定义height,就解决了父级div无法自动获取到高度的问题。

优点: 简单、代码少、容易掌握

缺点: 只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220500.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午8:20
下一篇 2026年3月17日 下午8:21


相关推荐

  • Java多线程:线程死锁

    Java多线程:线程死锁

    2021年11月16日
    43
  • java线程学习

    java线程学习

    2021年11月12日
    52
  • n8n教程:如何解决工作流触发时出现“401 Unauthorized”错误?

    n8n教程:如何解决工作流触发时出现“401 Unauthorized”错误?

    2026年3月15日
    3
  • 头文件cstring、string、string.h的区别「建议收藏」

    头文件cstring、string、string.h的区别「建议收藏」头文件cstring、string、string.h的区别<string>是C++标准库头文件,使用stirng类型必须首先包含string头文件,用于字符串操作,string类型可以进行+、=、+=、>等运算。std::string类实际上是STL模板类std::basic_string的具体化。#include<string>usingnamespacestd;strings;<cstring>是C标准库头文件<strin

    2025年9月3日
    8
  • 散列/散列函数「建议收藏」

    散列/散列函数「建议收藏」散列是一种用于以常数平均时间执行插入、删除和查找的技术。每个关键字被映射到从0-TableSize-1这个范围中的某个数,并且被放到适当的单元中。这种映射就叫做散列函数我认为,先用散列函数将我们所要进行操作的集合整合成散列表,是对之后的操作的一种便利。放到实际中去,我们要进行操作的集合不仅仅只是数字,例如图书馆中的书籍分类等等。而且就算是一组不连续差距较大的数字,要执行后序的插入删除和查找都是很不方

    2022年5月15日
    44
  • 遍历qvector_顺序储存容器QVector | 学步园

    遍历qvector_顺序储存容器QVector | 学步园容器 Containers 有时候也被称为集合 collections 指的是能够在内存中存储其他特定类型的对象的对象 这种对象一般是通用的模板类 C 提供了一套完整的解决方案 成为标准模板库 StandardTemp 也就是我们常说的 STL Qt 提供了它自己的一套容器类 这就是说 在 Qt 的应用程序中 我们可以使用标准 C 的 STL 也可以使用 Qt 的容器类 Qt 容器类的好处在

    2025年7月4日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号