前言:

    当不给父元素设置宽高时,父元素的宽高会被子元素的内容撑开。但当子元素设置浮动属性(float) 后,

     子元素会溢出到父元素外,父元素的宽高也不会被撑开,这称之为“高度塌陷”。可以理解为使用浮动后的副作用

    

    那什么是高度塌陷呢?比如下面截图,box1和box2的外层(这里外层指下图箭头所指的紫色部分)

    

     本来应该像下面截图一样,外层包裹住box1和box2,但因为设置浮动导致父元素高度塌陷,所以出现了上图的情况

    

  

  3种浮动清除方法

  以前我喜欢固定用一种方式来清除浮动,其实方法不止一种,下面简单总结了3种清除浮动的方法

  ①:使用 overflow: hidden; (子元素设置浮动后,直接给父元素添加 overflow: hidden;属性即可

    ②:使用 clear:both; (新增一个空div,然后给这个空div添加  clear:both;属性即可

    ③:使用 伪元素 ::after(给末尾添加一个看不见的块元素来清除浮动)

  3种浮动清除方法优缺点

  ①:优点是语义化且代码量少;缺点是可能因为内容增加导致超出尺寸的内容被隐藏(不推荐)

  ②:优点是更加语义化;缺点是增加了一个空div,违背了结构样式行为应该分离的原则;(不推荐)

  ③:优点是不仅语义化而且遵守了结构样式行为应该分离的原则;没有什么缺点,现在是主流的方法,(推荐)

  下面我按照上面 ①②③ 编号顺序给出对应 3种方法的代码示例demo

<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
<style>
.content {
overflow: hidden;
width: 1200px;
border: 10px solid #8990D5;
} .float-box {
float: left;
} .box1,
.box2 {
width: 400px;
height: 400px;
text-align: center;
} .box1 {
background-color: #FFB5BF;
} .box2 {
background-color: #94E8FF;
}
</style>
</head> <body>
<div class="content">
<div class="box1 float-box">box1</div>
<div class="box2 float-box">box2</div>
</div>
</body> </html>
<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
<style>
.content {
overflow: hidden;
width: 1200px;
border: 10px solid #8990D5;
} .float-box {
float: left;
} .box1,
.box2 {
width: 400px;
height: 400px;
text-align: center;
} .box1 {
background-color: #FFB5BF;
} .box2 {
background-color: #94E8FF;
}
.box3 {
clear: both;
}
</style>
</head> <body>
<div class="content">
<div class="box1 float-box">box1</div>
<div class="box2 float-box">box2</div>
<div class="box3"></div>
</div>
</body> </html>

  

<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title>
<style>
.content {
width: 1200px;
border: 10px solid #8990D5;
} .content::after {
content: '';
display: block;
clear: both;
} .float-box {
float: left;
} .box1,
.box2 {
width: 400px;
height: 400px;
text-align: center;
} .box1 {
background-color: #FFB5BF;
} .box2 {
background-color: #94E8FF;
}
</style>
</head> <body>
<div class="content">
<div class="box1 float-box">box1</div>
<div class="box2 float-box">box2</div>
</div>
</body> </html>

css清除浮动的3种方式的更多相关文章

  1. css清除浮动的两种方式(clearfix和clear)

    最近总是在用浮动,这两种方式总是浮现在眼前,或者说去掉父级和同级浮动样式总在思考中.两种方式怎么写都在base.css中. 在做瑞祥之旅的过程中,还是吃了一个大亏,就是清除浮动,不管是同级还是父级,都 ...

  2. css清除浮动的几种方式,哪种最合适?

    细心的人可能发现了,写的导航条中存在一个问题,那就是使用了float之后,父级盒子的高度变为0了. 我们来写一个例子来看一下,创建一个父级div,并设置border属性,然后下边创建两个子元素span ...

  3. HTML/css清除浮动的几种方式

    浮动在HTML/CSS布局中十分常见,虽然浮动布局可以实现很多有用的排版效果,但是浮动的元素脱离了文档流,可能造成包含块高度塌陷.下方行框上移等行为.因此在使用浮动实现想要的效果后,通常还需要清除浮动 ...

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

    浮动对页面的影响: 如果一个父盒子中有一个子盒子,并且父盒子没有设置高,子盒子在父盒子中进行了浮动,那么将来父盒子的高度为0.由于父盒子的高度为0, 下面的元素会自动补位,所以这个时候要进行浮动的清除 ...

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

    1.给浮动的元素的父级添加 overflow:hidden;属性 ul>不浮动 添加overflow:hidden; li>浮动 2.给浮动的元素的父级添加after伪类 ul:after ...

  6. 【css】清除浮动的几种方式

    [css]清除浮动的几种方式   因为浮动框不在普通的文档流中,所以它不占据空间.如下面的代码: .news { background-color:gray; border:1px solid bla ...

  7. css考核点整理(一)-浮动的理解和清除浮动的几种方式

    浮动的理解和清除浮动的几种方式 clear语法:clear : none | left | right | both 取值:none : 默认值.允许两边都可以有浮动对象left : 不允许左边有浮动 ...

  8. 前端老司机常用的方法CSS如何清除浮动?清除浮动的几种方式

    在前端开发过程中,我们经常会使用到浮动(float),这个我们即爱又恨的属性.爱,是因为通过浮动,我们能很方便地进行布局:恨,是因为浮动之后遗留下来太多的问题需要解决.下面本篇文章给大家介绍CSS清除 ...

  9. 活学活用,CSS清除浮动的4种方法

    清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近. CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受. 1.结尾处加空div标签 ...

随机推荐

  1. 服务器端 less的安装

    一. 安装 npm apt-get install npm 二. 安装less 在服务器端安装 LESS 的最简单方式就是通过 npm(node 的包管理器), 像这样: $ npm install ...

  2. Jace 上新建 Station 配置 笔记

    1.Station站点的结构图 2.niagara 结构框架图 Niagara 系统的架构是围绕着“以组件(Component)为导向的编程”为核心设计的.组件(Component)是使用Java 编 ...

  3. Python利用os模块批量修改文件名

    初学Python.随笔记录自己的小练习. 通过查阅资料os模块中rename和renames都可以做到 他们的区别为.rename:只能修改文件名   renames:可以修改文件名,还可以修改文件上 ...

  4. wxpy使用

    一 简介 wxpy基于itchat,使用了 Web 微信的通讯协议,,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展.实现了微信登录.收发消息.搜索好友.数据统计等功能. 总而言之,可用来实 ...

  5. 错误笔记 对象为null时调用改对象的方法会报错

    对象为null时调用改对象的方法会报错

  6. mysql中null与“空值”的坑

    https://blog.csdn.net/u014743697/article/details/54136092

  7. PHP微信商户支付 - 企业付款到零钱功能(即提现)技术资料汇总

    PHP实现微信开发中提现功能(企业付款到用户零钱) 一.实现该功能目的 这几天在小程序里要实现用户从系统中提现到零钱的功能,查了一下文档可以使用 企业付款到用户零钱 来实现: 官方文档:https:/ ...

  8. 前端工具mock的使用 - 造数据模拟网络请求

    前后端同步开发过程中,有时候前端页面完成了,需要等待后端接口完成部署后才能联调. 这个时候如果不想等待,想自己造数据模拟网络请求,这种情况就能用到mock工具了. mock工具可以用在web网站,也能 ...

  9. linux下mysql修改字符集

    # 编辑/etc/my.cnfvim /etc/my.cnf # 在[mysqld]标签下添加下面内容default-storage-engine = innodbinnodb_file_per_ta ...

  10. 修改 bug 总结

    对于 elementui table 组件的排序 要求对每列数据进行排序 数据是 金额之类 数字的没问题 但是 针对 标题中有数字,字母,文字的时候 会排序错误 :sort-method=" ...