一、什么是浮动?

  什么是浮动呢?一般是一个子元素使用了 float 浮动属性,导致父级元素不能被撑开,这样浮动就产生了。

    如下:

<!DOCTYPE html>
<html><head>  <meta charset="utf-8"><title></title><style type="text/css">.box{width: 400px;border: solid 2px red;margin: 50px auto;}            .div1{width: 150px;height: 150px;border: solid 1px black;font-size: 50px;text-align: center;line-height: 150px;}    .div2{width: 150px;height: 150px;border: solid 1px black;font-size: 50px;text-align: center;line-height: 150px;}    </style></head><body><div class="box"><div class="div1">left</div><div class="div2">right</div></div></body>
</html> 

  

如图1,两个元素left与right是在红色的box里的;                   

     

  

  当我们给两个子元素设置了 float 属性后,就会变成图2的情况。

  

.div1{float:left;
}
.div2{float:right;
}

    

  

 

  本来两个子元素left和right是在红色盒子box内的,因为对两个子元素使用了float浮动,所以两个子元素产生了浮动,导致父级红色的box不能撑开,只剩下了边框,这样浮动就产生了。

  简单的说,浮动是因为使用了float:left或float:right或两者都是有了而产生的浮动。   

二、浮动产生的负作用

  1、背景不能显示
    由于浮动的产生,如果对父级设置了background属性,而父级不能被撑开,就会导致background不能显示

     2、边框不能撑开

    如上图中,如果父级设置了border边框属性,由于子元素使用了float属性,产生浮动,父级不能被撑开,导致边框不能随内容而被撑开。

  3、margin和padding设置值不能正确显示
    由于浮动导致父元素与子元素之间设置了padding、margin属性的值不能正确显示。

三、清除浮动的方法

  1、给父级元素设置高度height 

<style type="text/css">  .box{     width: 400px;     border: solid 2px red;      height: 150px;      margin: 50px auto;  }</style>

       

  父级div手动设置了height值,就解决了父级div无法自动获取到高度的问题。

  这种方法比较简单、代码少、容易掌握 ;但是也有缺点,就是这种方法只适合高度固定的布局,要给出精确的高度,如果高度不确定时,则不适合使用

  

  2、 给浮动元素加一个兄弟元素,并对其设置clear: both属性   

<div class="box"><div class="div1">left</div><div class="div2">right</div><div class="div3"></div>
</div>

<style type="text/css">.div3{clear: both;}
</style>    

   

  给浮动元素添加一个兄弟元素,利用css的clear:both属性清除浮动,可以让父级div自动获取到高度

  这种方法的优点是简单、代码少、浏览器支持好、不容易出现怪问题 ;缺点是初学者不容易理解;而且如果页面浮动布局多,就要增加很多空div,让人感觉很不好

  3、据说是目前最高大上的方法 : )   给浮动元素的父元素增加伪元素  ::after 属性

<!DOCTYPE html>
<html><head>  <meta charset="utf-8"><title></title><style type="text/css">.box{width: 400px;border: solid 2px red;margin: 50px auto;}.box::after{display: block;content: "";clear: both;}   .div1{width: 150px;height: 150px;border: solid 1px black;font-size: 50px;text-align: center;line-height: 150px;}    .div2{width: 150px;height: 150px;border: solid 1px black;font-size: 50px;text-align: center;line-height: 150px;}      </style></head><body><div class="box"><div class="div1">left</div><div class="div2">right</div><!-- after  相当于在div2后添加了一个元素,并为其添加clear: both属性--></div></body>
</html>     

    

   如图,得到的依然是同样的结果。这种方法清除浮动是现在最拉风的一种清除浮动,他就是利用伪元素 ::after 来在元素内部插入元素块,从而达到清除浮动的效果。其实现原理类似于clear:both方法,只是区别在于clear在html插入一个div.clear标签, 而后者利用其伪类clear:after在元素内部增加一个类似于div.clear的效果。

  4、给浮动元素的父级元素添加 overflow:hidden 属性

<style type="text/css">.box{    width: 400px;    border: solid 2px red;      margin: 50px auto;overflow: hidden;    }
</style>

   

   这种方法必须定义宽度,同时不能定义高度,使用over:hidden浏览器自动检测浮动元素的高度。这种方法的优点是代码量少,缺点是如果子级为定位元素,而且子级宽度大于父级时,多余的内容会被隐藏

     

    结语:清除浮动的方式虽然是有很多种,但是不是每种都适合你,也不是每种都能很好的兼容所有浏览器,所以参照你觉得最好的方式去做,个人觉得方法三不错,不需多于的标签,而且也能很好的兼容。当一个内层元素是浮动的时候,如果没有关闭浮动时,其父元素也就不会再包含这个浮动的内层元素,因为此时浮动元素已经脱离了文档流。也就是为什么外层不能被撑开了!

转载于:https://www.cnblogs.com/mysun-shine/p/6293473.html

关于清除浮动那些事儿~相关推荐

  1. css清除浮动无效,css清除浮动的处理方法

    根据<精彩绝伦的css> JS Bin .news{ outline:1px solid pink } .col{ float: left; width:33%; outline:1px ...

  2. CSS中关于清除浮动的问题

    1.采用:after的方法清除浮动 优点:避免在html里插入多余的标签 详情:http://www.positioniseverything.net/easyclearing.html 整理成一个通 ...

  3. 前端笔记(6)css布局机制,浮动,清除浮动,图片格式,ps切片工具及插件

    css样式表/层叠样式表(4) css布局的三种机制 浮动 浮动(float)的扩展 清除浮动 额外标签法(隔墙法) 父级添加overflow属性方法 使用after伪元素清除浮动 使用双伪元素清除浮 ...

  4. css如何清除浮动(二)

    2019独角兽企业重金招聘Python工程师标准>>> 在上篇介绍通过设置祖先元素的高度类清除浮动,但在实际的网站开发中,很少会设置元素的高度,那这是为什么呢? 是因为元素一般都能被 ...

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

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

  6. css清除浮动的处理方法

    根据<精彩绝伦的css> <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

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

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

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

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

  9. 清除浮动的几种常见方法

    1 <div class="container"> 2 <p style="float:left">这是一段浮动文字</p> ...

最新文章

  1. 数仓建模 项目_音乐数据项目火力全开,技能双倍提升!
  2. 掌握可视化卷积神经网络模型,带你畅游图像识别技术领域
  3. Android解析WindowManagerService(三)Window的删除过程
  4. [CTF][Web][PHP][JavaScript]弱类型问题
  5. 阿里大数据中台12年建设经验的精华总结!一次性说清!
  6. linux创建文件结构体,Linux file 结构体和 inode 结构体,Go语言入门技术,Go语言基础...
  7. leetcode 1227 python
  8. CISA 称SolarWinds黑客或通过密码猜测攻陷目标,CISA 前局长受聘
  9. Web — 概述、国际标准概述、特点+扩展名类型
  10. 图解:如何修改CSDN账号昵称?
  11. 手动保存刷新微星主板BIOS图解教程
  12. JavaScript(JS)网页--动态生成表格
  13. [电动智能汽车-3]:原理 - 整车控制器VCU功能
  14. 软件需求工程2018期末题
  15. oracle 归档日志 重做日志,Oracle的重做日志和归档日志
  16. python兔子编程_少儿编程分享:手把手教你用PYTHON编写兔獾大作战(一)
  17. 配置文件工具类【ConfigTools】
  18. 打开单片机世界的大门——上位机控制下位机实例详解
  19. 360浏览器html位置,win7系统查看360浏览器收藏夹位置的操作方法
  20. 备考PMP的程序员注意了!!!13张PMPBook思维导图免费送上,没有套路,直接领取

热门文章

  1. mutation annovar
  2. Spark 源码分析 -- RDD
  3. Android 之 Shape (圆角输入框)
  4. linux kernel 2.6.36 编译升级
  5. 改变客户端访问时的方法名
  6. BIRCH聚类算法原理
  7. Visual studio C++ MFC之点击按钮(菜单栏)生成新窗口
  8. overfitting
  9. PE头里的东西更多。。。越看越恶心了,我都不想看了
  10. POJ_1976 A Mini Locomotive (dp)