1、为什么要浮动

首先我们要知道为什么要给元素设置浮动。HTML中标签分为:块级标签,行内标签,行内块标签。其中块级标签和行内块标签以及行内标签的排列方式是不一样的,块级标签是独占一行的,而行内块元素和行内元素是在同一行内排列的,只有当排满或者容不下元素时才会另起一行显示。因此想要块级元素在同一行内显示,或者想要设置元素浮动对齐的方式就需要将元素浮动起来。css中float属性用来设置元素的浮动,属性值有left和right,分别代表左浮动和右浮动,浮动只能在当前的父元素中浮动,并且浮动的元素不能超过上一个兄弟元素
块级元素未浮动时排列方式,box和con都是块级元素,在没有浮动的情况下是独占一行显示的。

以下是布局代码:

     <style>.outer{width: 400px;height: 250px;background-color: pink;}.box{width: 100px;height: 100px;background-color: #A9A3FF;}.con{width: 100px;height: 100px;background-color: #4eff58;}</style><div class="outer"><div class="box">box</div><div class="con">con</div></div>

块级元素浮动后的排列方式,box和con都设置了css样式float:left;浮动后的显示效果,块级元素可以在同一行内显示。

以下是布局代码:

     <style>.outer{width: 400px;height: 250px;background-color: pink;}.box{width: 100px;height: 100px;float:left;background-color: #A9A3FF;}.con{width: 100px;height: 100px;float:left;background-color: #4eff58;}</style><div class="outer"><div class="box">box</div><div class="con">con</div></div>

2、为什么要清除浮动

浮动是一种常见的布局,但是浮动如果没有清除的话可能会带来很多的问题,最常见的浮动问题就是父级塌陷,而父级塌陷的原因则是因为父级内的元素在浮动之后会脱离文档流,文档流又称为普通流,是文档中可实现元素在排列时所占用的位置。浮动的元素,并不属于文档中的普通流,元素漂浮于普通流之上,能够左右浮动,也就是因为浮动的这种特性,导致属于普通流的元素在设置浮动后,在父级没有设置高度的情况下(在实际开发中,一般不会给元素的父级设置宽高),父级的高度就会是0,这就是我们所说的父级高度塌陷。
以下图片结合上面两张图可以看出,在父级outer元素没有清除浮动且没有设置高度的情况下,父级的高度为0,粉色区域消失。

     <style>.outer{width: 400px;/*height: 250px;不设高度*//*overflow: hidden; 没有清除浮动*/ background-color: pink;}.box{width: 100px;height: 100px;float: left;background-color: #A9A3FF;}.con{width: 100px;height: 100px;float: left;background-color: #4eff58;}</style>
</head>
<div class="outer"><div class="box">box</div><div class="con">con</div>
</div>

**补充: 浮动对行内元素的影响,**拥有float属性的元素可以设置width和height,并支持margin-top/margin-bottom 和padding-top/padding-bottom属性。**浮动对块级元素的影响,**可以在同一行内显示。

3、清除浮动的常用方法

(1)伪元素清除浮动(推荐使用)
伪元素清除浮动的原理则是给当前浮动的元素父级添加after伪元素,为after伪元素设置清除浮动的功能代码。

       .box{/* 下面代码中的*是css hack */*zoom:1;/*开启了haslayout  相当于开启了BFC,为了兼容IE浏览器*/}.box:after{content: "\200B"; display: block;height: 0;clear: both;}

(2)overflow清除浮动
**overflow:hidden;**是元素超出隐藏的意思,但是在不需要隐藏超出元素的情况下可以使用该属性清除浮动,实际原理是开启了 BFC(块级格式化上下文), BFC是一个独立的渲染区域,它规定了内部的元素如何布局,并且与该区域外的元素没有任何的影响,当元素开启的BFC以后,父元素可以包含浮动的子元素。
(3)空块级标签清除浮动
空块级标签清除浮动的原理则是在浮动元素的末尾添加一个空的块级标签,设置css属性为clear:both;当页面浮动元素较多时不建议使用该方法清除浮动,因为需要添加多个空块级标签,增加浏览器运行的负担,页面代码也重复较多,不利于开发人员开发和维护。

<p style="clear: both;"></p>
<br clear="all">

(4)
标签清除浮动

标签清除浮动的原理则是在浮动元素的后面添加一个
,clear=“all”是
标签自身拥有的属性,原理和空块级标签清除浮动类似,但是几乎不用。

<br clear="all">

(5)给父级设置宽高(不推荐使用)
虽然给父级设置高度可以避免浮动带来的父级塌陷问题, 但是并不推荐使用,设置高度的方式比较局限,而且在实际开发中我们是很少会给父级设置高度的,因为父级的高度可以由子元素撑开,这样减少了代码的重复,同时不需要计算父级的高度,利于开发。

Css清除浮动常用方法相关推荐

  1. CSS清除浮动常用方法小结

    2019独角兽企业重金招聘Python工程师标准>>> 使用div+css布局的好处不用多说,经常性地会使用到float,那么清除浮动就是必须要做的,而且随时性地对父级元素清除浮动的 ...

  2. CSS清除浮动的四种常用方法及其优缺点

    前言 什么是CSS清除浮动? 在非IE浏览器下,当容器的高度为auto(没有设置),且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度 ...

  3. CSS清除浮动大全共8种方法

    清除浮动是每一个 web前台设计师必须掌握的机能.css清除浮动大全,共8种方法. 浮动会使当前标签产生向上浮的效果,同时会影响到前后标签.父级标签的位置及 width height 属性.而且同样的 ...

  4. CSS清除浮动_清除float浮动

    CSS清除浮动方法集合 一.浮动产生原因   -   TOP 一般浮动是什么情况呢?一般是一个盒子里使用了CSS float浮动属性,导致父级对象盒子不能被撑开,这样CSS float浮动就产生了. ...

  5. CSS——清除浮动的六种解决方案

    CSS--清除浮动的六种解决方案 参考文章: (1)CSS--清除浮动的六种解决方案 (2)https://www.cnblogs.com/iwilling/p/8485608.html (3)htt ...

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

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

  7. css清除浮动的原理

    最近学习css发现了高度塌陷时候要清除浮动,为了理解清楚浮动原理,网上找了不少资料,发现都写的不是很清楚,而且都是一模一样的内容,我在里分享一下我对清楚浮动原理的理解, 如果你已经很了解什么是浮动和浮 ...

  8. [css] 清除浮动的方式有哪些及优缺点?

    [css] 清除浮动的方式有哪些及优缺点? 什么是盒子塌陷? 外部盒子本应该包裹住内部的浮动盒子,结果却没有.问题出现的原因 父元素只包含浮动元素,那么它的高度就会塌缩为零(前提就是你们没有设置高度( ...

  9. div为空的时候 浮动没有效果_3种CSS清除浮动的方法

    点击上方 "前端技术精选" 关注,星标或者置顶 12点00分准时推送,第一时间送达 作者:html中文网 | 编辑:前端妹 来源:html.cn/web/css/19613.htm ...

最新文章

  1. Monkey测试com.android.browser 发 生类似android.datab
  2. 递归-计算字符串长度(代码、分析、汇编)
  3. 牛x!一款比传统数据库快 100-1000 倍的数据库,来认识一下?
  4. (转载)应用层协议和传输层协议的关系
  5. win10 忘记登录密码后 修改密码
  6. 你如何才能成为10倍速的程序员
  7. WordPress目录解析
  8. Android 自定义带拼音Textview 带音调
  9. css3中文参考手册
  10. 如何去除word文档中向下的箭头
  11. 酒店管理系统--C语言版
  12. L1、L2正则regularization和weight decay
  13. AIX 操作系统安全配置指南
  14. pgsql修改表中字段属性
  15. 2020计算机数电实验第四次(2)
  16. 科创人·36氪副总裁王坤:企服产品应重视使用者体验,36氪将推出中国版「魔力象限」
  17. “泰迪杯” 挑战赛 - 基于市场资金流向分析的商品期货量化交易策略(附suibian代码)
  18. html生成无序列表,HTML的ul无序列表
  19. 慕课网模抖音小程序 springboot笔记
  20. 解析微波辐射计数据,并上传到mysql数据库(pandas应用及mysql操作)

热门文章

  1. SlimDX和WPF的合作应用
  2. Python爬虫: 用urllib2+beautifulsoup写的抓取网页内容的示例
  3. 数字图像处理之均值滤波
  4. 2019年将是云系统制造商的一年
  5. 《天道》的一些经典台词
  6. 如何用ChatGPT做内容营销方案和选题计划,同时生产和优化内容?
  7. python代码运行后怎么保存_1.11Python下保存并执行程序
  8. 感觉自己干什么都不行,怎么办?
  9. 自己动手写操作系统系列第4篇,完结篇之实现系统调用
  10. 处理Byte字节的工具---ByteUtil