在我们使用html搭建网页时,如果一个父元素中的某个子元素设置浮动后,就会造成父元素的高度塌陷,会导致页面结构混乱。这是因为在文档流中,父元素的高度默认是被子元素撑开的,也就是子元素多高,父元素就多高。
但是当为子元素设置浮动以后,子元素会完全脱离文档流,此时将会导致子元素无法撑起父元素的高度,导致父元素的高度塌陷。
​ 由于父元素的高度塌陷了,则父元素下的所有元素都会向上移动,这样将会导致页面布局混乱。

例如:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>清除浮动</title><style>*{margin: 0;padding: 0;color: white;text-align: center;font-size: 20px;}.father{border: 3px solid red;}.son1{width: 400px;height: 50px;background-color: black;}.son2{width: 600px;height: 100px;background-color: lawngreen;//设置浮动float: left;}</style>
</head>
<body><div class="father"><div class="son1">son1</div><div class="son2">son2</div></div>
</body>
</html>

执行上面代码后,发现父元素只包裹了son1这个元素
这是因为son2元素设置了浮动,脱离了文档流,不在文档流中占据位置,而父元素和son2依然是在文档流中,这就造成了父元素高度塌陷。

解决方法:

1、可以利用clear样式清除浮动
在父元素的最后添加一个空白的div,它可以撑开父元素的高度,然后对其清除浮动。这种方式可以清除浮动,但是会在页面中添加多余的结构。
clear属性取值:
​ none: 默认取值, 按照浮动元素的排序规则来排序(左浮动找左浮动, 右浮动找右浮动)
​ left: 不要找前面的左浮动元素
​ right: 不要找前面的右浮动元素
​ both: 不要找前面的左浮动元素和右浮动元素
这里直接使用clear:both

 <div class="father"><div class="son1">son1</div><div class="son2">son2</div><div style="clear:both"></div></div>

2、利用after伪类
可以通过after伪类向父元素的最后添加一个空白的块元素,然后对其清除浮动,这样做和添加一个 空白div的原理一样,可以达到一个相同的效果,而且不会在页面中添加多余的div,这是我们最推荐使用的方式,几乎没有副作用。

.father::after {/*添加一个内容*/content: "";/*转换为一个块元素*/display: block;/*清除两侧的浮动*/clear: both;}

3、给父元素定死高度
给父元素定死高度,但是一旦高度写死,父元素的高度将不能自动适应子元素的高度,所以这种方案是不推荐使用的。

.father {border: 3px solid red;height:800px;}

4、父元素添加overflow方法
可以通过触发BFC的方式,实现清楚浮动效果。同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度。而且 overflow不为visible才能开启BFC

.father {border: 3px solid red;overflow: hidden;}

补充:

给父元素开启BFC,也能解决高度塌陷问题
BFC是一个独立的布局环境,BFC内部的元素布局与外部互不影响。详细内容大家可以上网查找,这里略提一手。
BFC的作用:

解决浮动元素令父元素高度坍塌的问题

方法:给父元素开启BFC

原理:计算BFC的高度时,浮动子元素也参与计算
开启BFC:
1.float属性不为none

2.position 为absolute或fixed

3.display为inline-block table-cell table-caption flex inline-flex

4.overflow不为visible时

如果有什么错误或更好的建议,欢迎评论区里指出!!!

HTML清除浮动的四种方式相关推荐

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

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

  2. 清除浮动的四种方式及其原理

    前言: 什么是浮动,浮动给我们造成了什么困扰,我们该使用什么方式来解决它.下面会介绍到为什么要清除浮动以及清除浮动的四种方式. 目录: 前言: 一.为什么要清除浮动 二.清除浮动的第一种方式---给父 ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 批量修改文件名称(Python)
  2. 《 测试反模式:有效规避常见的92种测试陷阱》——1.3 什么是缺陷
  3. 打包caddy为docker镜像
  4. 1105 Spiral Matrix (25 分)【难度: 一般 / 知识点: 模拟】
  5. 什么是命名空间 为什么C++需要使用命名空间
  6. sqlite管理工具_Liquibase 数据库版本管理工具:1.安装
  7. Silverlight之Button控件简单自定义
  8. python爬虫ppt_完全零基础 轻松学Python:数据类型:数字类型、空类型、布尔类型...
  9. 采用docker部署3台Redis分布式红锁实例
  10. 解决Win10中WerFault错误报告问题
  11. Q113:PBRT-V3分别在Linux和Mac下的编译与调试(汇总)
  12. Matlab R2014a安装教程
  13. EPS学习笔记2----------常用地物绘制基础
  14. ie地址栏不能识别中文参数(google浏览器是正常的)
  15. Ruby-学习之路1.1
  16. Android条形码带数字,android – 使用条形码数字获取名称,价格等产品信息
  17. c#语言定义文档pdf,C#如何更改Word的语言设置.pdf
  18. 悟空活动中台 - 基于 WebP 的图片高性能加载方案
  19. 计算机不得不知道的知识,术业有专攻计算机维修人员不得不知道的知识
  20. oracle 嵌套 哈希,Oracle-三种联接方法(哈希连接、嵌套连接、笛卡儿乘积)

热门文章

  1. 1.1.1 三角形正弦定理
  2. 视频转为GIF怎么做 如何做GIF动态图
  3. kb2919355 此更新不适用于你的计算机的解决方法
  4. c语言之文件存储通版讯录
  5. [转载]综合运用:我的错题本(八3班吴潇同同学找供)
  6. 一个标准的行业分析怎么做
  7. 【山东】关于2012年下半年计算机技术与软件专业技术资格(水平)考试有关问题的通知
  8. xp和Ubantu双系统删掉Ubantu (mbrfix工具)
  9. 宝宝与父母间的纽带——毛绒玩具
  10. 常见的社交电商有哪些类型?如何开发社交零售电商平台?