前言:

    当不给父元素设置宽高时,父元素的宽高会被子元素的内容撑开。但当子元素设置浮动属性(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. Redis的学习

    单线程架构可参考:https://blog.csdn.net/sunhuiliang85/article/details/73656830

  2. cocos creator 碰撞检测

    creator的碰撞检测系统分为碰撞检测系统和物理碰撞检测系统两个模块,并且这两个模块是相互独立的(这边主要是非物理碰撞检测系统) 1.在制作碰撞检测系统的时候要对物体进行分组,即指定节点的分组与分组 ...

  3. 测开之路十:函数&参数

    def 函数名(): 函数代码块 return 返回值 参数 必备参数:位置参数,调用函数时必须有值传入 默认参数,调用如果没有传值使用默认值 不定长参数 *args:想传多少传多少,必须放在位置参数 ...

  4. java springboot 大文件分片上传处理

    参考自:https://blog.csdn.net/u014150463/article/details/74044467 这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时 ...

  5. ***报错Class 'Redis' not found in(原创)

    报错:Class 'Redis' not found in 这个报错,表明phpredis 扩展没有安装好,而不是redis没有安装 有没有安装成功这个扩展,可以通过phpinfo来查看. 解决问题的 ...

  6. C#学习-扩展方法

    并不是所有的方法都可以用作扩展方法,如何分辨代码中定义的是扩展方法还是普通方法呢? 我们需要考察它是否符合下列扩展方法的定义规则: 1.扩展方法必须在一个非嵌套.非泛型的静态类中定义: 2.它至少要有 ...

  7. Ubuntu 16.04.3 LTS u盘-安裝教程(填坑)

    Ubuntu 16.04.3 LTS 下载地址: https://www.ubuntu.com/download/desktop 下载u盘后文件为iso,可以选择UltraISO制作U盘启动,也可以直 ...

  8. html_之css

    css 有三种形式的写法: 直接在标签里写入style样式 在<head></head>里写入<style></style>样式 直接创建.css 文件 ...

  9. 2019全国大学生信息安全竞赛初赛pwn前四题writeup—栈部分

    ret to libc技巧:https://blog.csdn.net/zh_explorer/article/details/80306965 如何leak出libc地址:基地址+函数在libc中的 ...

  10. Django----博客文章数据返回

    步骤1:新建视图函数 from django.shortcuts import render from django.http import HttpResponse; from blog.model ...