前言:

什么是浮动,浮动给我们造成了什么困扰,我们该使用什么方式来解决它。下面会介绍到为什么要清除浮动以及清除浮动的四种方式。


目录:

  • 前言:
  • 一、为什么要清除浮动
  • 二、清除浮动的第一种方式---给父级盒子添加高度
  • 三、清除浮动的第二种方式---额外标签法
  • 四、清除浮动的第三种方式---给父级添加 overflow 属性
  • 五、清除浮动的第四种方式---给父级添加after伪元素

一、为什么要清除浮动

在我们的开发过程中,浮动元素是css中最常用的属性,浮动起来的元素会脱离标准流,如果我们的父级盒子没有设置高度就会造成父级盒子的高度塌陷,就会影响我们下面盒子的正常显示。
什么是高度塌陷呢,我们用一个小小的案例来了解一下,请看下面代码。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.father {width: 100%;border: 2px solid red;}.son {width: 300px;height: 300px;border: 2px solid blue;}.box {width: 100%;height: 300px;background-color: green;}</style></head><body><div class="father"><div class="son"></div><div class="son"></div></div><div class="box"></div></body>
</html>

效果图如下

请注意此时我并没有给father这个盒子设置高度,接下来给son盒子设置一个左浮动

     .son {width: 300px;height: 300px;border: 2px solid blue;float: left;}

请看效果图

我们发现father盒子成为一条红线,box盒子跑到son盒子的后面,这就是因为father盒子没有高度,在没有设置浮动之前son盒子是属于标准流的,son盒子会把father盒子撑开,一旦给son盒子设置浮动,它就会立即脱离标准流浮动起来(就是离开father盒子),而father没有设置高度,在失去son盒子支撑的时候就会变成一条横线,随即下面的box盒子就会跟随father盒子跑上去。这就是造成高度塌陷的原因。
高度塌陷会影响到我们下面的盒子,所以我们需要将浮动的son盒子重新塞回father盒子,也就是清除浮动,让我们的box盒子正常显示。


二、清除浮动的第一种方式—给父级盒子添加高度

造成高度塌陷的原因就是父盒子没有高度,我们只需要给父盒子添加一个高度即可

     .father {width: 100%;border: 2px solid red;height: 300px;}

效果如下

原理: 我们上面说到,造成高度塌陷的原因就是父盒子没有高度,我们只需要给父盒子添加一个高度即可,但是这种方式并不推荐使用,因为有很多局限性,况且son盒子依然是脱离标准流,并没有回到father盒子中,所以做一个简单的了解即可。


三、清除浮动的第二种方式—额外标签法

额外标签法会在浮动元素末尾添加一个空的标签。给这个标签设置clear属性,注意这个标签必须是块级元素

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.father {width: 100%;border: 2px solid red;}.son {width: 300px;height: 300px;border: 2px solid blue;float: left;}.box {width: 100%;height: 300px;background-color: green;}.clear {clear: both;} //为标签设置清除浮动</style></head><body><div class="father"><div class="son"></div><div class="son"></div><div class="clear"></div></div><div class="box"></div>//添加清除浮动标签</body>
</html>

效果图如下

原理: clear:both的作用是不允许周围有浮动现象,所以就可以达到清除浮动的效果,但是这样做,对于比较复杂的页面就显得结构非常的乱,所以不推荐使用


四、清除浮动的第三种方式—给父级添加 overflow 属性

这个方法是向浮动元素的父级盒子添加voerflow:hidden属性,这样就可以达到清除浮动的效果

 .father {width: 100%;border: 2px solid red;overflow: hidden;}

效果如下

原理: 让我们先来了解一下BFC(Block Formatting Context),BFC全称是块级格式化上下文,用于对块级元素排版,默认情况下只有根元素(body)一个块级上下文,但是如果一个块级元素设置了float:left,overflow:hidden或position:absolute样式,就会为这个块级元素生产一个独立的块级上下文,使这个块级元素内部的排版完全独立。也就是说独立的块级上下文可以包裹浮动流,全部浮动子元素也不会引起容器高度塌陷,就是说包含块会把浮动元素的高度也计算在内,这样就达到了清除浮动的效果,但是overflow:hidden本身的意思是溢出的元素隐藏显示,所以说有一定的缺点,大家可以根据情况来使用它。


五、清除浮动的第四种方式—给父级添加after伪元素

利用after伪元素定义一个clearfix类,浮动元素的父级元素调用此类可以实现清除浮动的效果

 .clearfix::after {content: "";display: block;height: 0;clear: both;visibility: hidden;}.clearfix {/* IE6、7 专有 */*zoom: 1;}
<body><div class="father clearfix"><div class="son"></div><div class="son"></div></div><div class="box"></div></body>

效果图如下

原理: 这个方式的原理和额外标签法的方式异曲同工,只是利用伪类向浮动元素的父盒子的后面添加了一个块级元素,至于*zoom: 1这个属性,是为了兼容低版本的浏览器。这种方式没有增加标签,结构更简单,也没有overflow带来的隐藏影响,很推荐使用这样的方式。


能力有限,文章难免会有不全面的问题,欢迎大家交流指正

清除浮动的四种方式及其原理相关推荐

  1. div清除浮动的四种方式

    div 清除浮动的四种方式 清除浮动主要是为了解决父元素因为子级浮动引起高度为 0 的问题. 简单来说给父元素加一个高度也能解决这个问题,但是很多情况下不方便给父元素高度.所以,一般情况下,应该让子元 ...

  2. HTML清除浮动的四种方式

    在我们使用html搭建网页时,如果一个父元素中的某个子元素设置浮动后,就会造成父元素的高度塌陷,会导致页面结构混乱.这是因为在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高 ...

  3. CSS—清除浮动的几种方式

    什么是浮动? 特性:1--浮动的元素不会占据标准流的空间,但是会影响标准流中的文本的排版.浮动只有左右浮动.2--浮动元素A的位置与上一个元素有关系.如果上一个元素有浮动,则A的顶部与上一个元素顶部对 ...

  4. css 清除浮动的几种方式

    css 清除浮动的几种方式 浮动布局和定位布局为css中布局的常用的两种布局方式,而且兼容性会比较好.随着flex的流行,以后会是主流. float布局会脱离文档流,对页面的布局造成影响,比如造成父级 ...

  5. 前端css 清除浮动的几种方式

    浮动的框可以向左或向右移动,直到他的外边缘碰到包含框或另一个浮动框的边框为止.由于浮动框不在文档的普通流中,所以文档的普通流的块框表现得就像浮动框不存在一样.浮动的块框会漂浮在文档普通流的块框上. 清 ...

  6. 清除浮动的几种方式,以及各自的优缺点

    清除浮动的几种方式,以及各自的优缺点 1.使用空标签清除浮动clear:both. 2.给父级div定义overflow:hidden 3.父级div定义伪类:after和zoom(用于非IE浏览器) ...

  7. [Web 前端] 018 css 清除浮动的四种方法

    清除浮动的四种方法 加 clear: ...(见例1) 父级上增加属性 overflow:hidden(见例2.1) 在最后一个子元素的后面加一个空的 div,给它一个样式属性 clear: both ...

  8. CSS清除浮动的四种方法

    CSS清除浮动的四种方法 第一种:使用div空标签法 第二种:父元素使用overflow: hidden 第三种:伪元素选择器:after 第四种:伪元素选择器:before + after 第一种: ...

  9. html中清除浮动的几种方式,清除浮动的几种方法-关于CSS清除浮动的几种方法

    CSS清除浮动的3种方法,参考: 方法1: #test{clear:both;} #test为浮动元素的下一个兄弟元素 方法2: #test{display:block;zoom:1;overflow ...

最新文章

  1. Resin3.19 连接池配置
  2. 自己帮别人写的网站可以公开源码吗_雷军靠写代码赚第一个 100 万,马化腾亲自写腾讯网,码农出身的大佬...
  3. Tomcat 5.0.18 安装配置指南
  4. Spring Boot(3)---Spring Boot入门:系统要求
  5. Combres库 学习小结以及部分源码分析
  6. 性能提升五十倍:消息队列延时聚合通知的重要性
  7. 并不是部所有市场都类似:评估 Marketplace 的 10 个特征
  8. NOIP2018 摸鱼记
  9. Linux网络编程 --- HTTP协议
  10. android 按钮带图标 阴影_Android Material Design系列之FloatingActionButton和Snackbar
  11. 借助nginx实现反向代理,并通过SSL证书实现https访问以及http调整https访问。
  12. Ubuntu防火墙状态整理
  13. Deep Learning(深度学习) 中文翻译
  14. Linux 线程基础 1
  15. MySQL数据库的官网下载、安装及卸载(2018年最新)
  16. 分类信息网和织梦搬家后报错Fatal error: Uncaught ArgumentCountError: Too few arguments to function AddFilter(), 3
  17. 专业技术职务代码-GBT8561-2001
  18. CGB2105-Day19
  19. GitHub 终端面基交友的新神器
  20. 【MPI】矩阵向量乘法

热门文章

  1. kali2020 vnc安装_kali配置x11vnc
  2. Godot Engine:DLC流程
  3. gradle配置单元测试目录
  4. 踩坑日记之Gradle自定义JacocoReport跟Test task
  5. Ciclop horus源码编译
  6. 博海拾贝--springcloud的组件及使用(4)Ribbon 负载均衡
  7. 功率信号源的使用方法有哪些
  8. 推动门html5,白鹭引擎CEO陈书艺:推动游戏前行 开启HTML5游戏之门
  9. 什么是SSD?什么是固态硬盘?
  10. 51单片机震动传感器控制灯,控制继电器