清除浮动的办法

<h2>浮动到底是什么?</h2>

<p>浮动核心就一句话:<strong>浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素</strong>。请默念3次!</p>

<p>浮动最初设计的目的并没那么多事儿,就只是用来实现文字环绕效果而已,如下所示:
</p><div class="image-package">

<img src="http://upload-images.jianshu.io/upload_images/1158202-27ac63a8ae142d04.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240">文字环绕效果</div>

</div>

<h2>为什么要清除浮动</h2>
浮动:元素使用浮动之后会脱离文档流,左右移动直到浮动元素的外边缘碰到到他的父元素的边框或者碰到另一个浮动元素的边框,浮动的这个性质会影响网页的布局,例如:
造成父元素的高度塌陷
[图片上传中。。。(1)]
当包含左列和右列的父元素的高度小于浮动的子元素时,父元素的高度没有被撑开。

影响块级元素中的文本



对于黄色div来说,浮动的粉色div是不影响他的布局的,黄色div就像不存在粉色div一样呈现自己的布局,但是对于黄色div中的文字来说受到了浮动元素的影响。

因为浮动会造成以上之类的布局问题,所以在使用float之后,我们要清除浮动。
清除浮动的几种方法
父元素也设置float:left。



这种方式比较简单,但是作为父容器来说设置了float同样会影响他相邻元素的布局,所以这种方法并不可取。

浮动元素后面加一个任何标签然后样式设置clear:both;
<div id="content"> <div class="left">左列,设置float:left</div> <div class="right">右列,设置float:left</div> <div class="clear"></div></div>

content{ width:1000px; background:#ddd; border:3px solid red; } .left{ float:left; width:300px; height:60px; background:pink; } .right{ float:left; width:300px; height:60px; background:yellow; } .clear{ clear:both; }

效果图:



这种方式同样是比较简单,但是缺点是增加了许多无意义的标签,不利于维护。

浮动元素后面加一个<br clear="all" />
该方法与上一个浮动元素后面加一个任何标签然后样式设置clear:both类似,也产生无语义化的标签。

包裹浮动元素的父元素使用overflow:hidden和overflow:auto

content{ width:1000px; background:#ddd; border:3px solid red; overflow:hidden; //overflow:auto; *zoom:1;//IE6中出发hasLayout }


这种方法的优点是不存在语义化的问题,缺点是一些情况下可能会产生滚动条或者内容被隐藏了。

使用after伪元素

content:after{ content:""; display:block; clear:both; }

IE6中不支持after,可以使用

content{ *zoom:1;//出发hasLayout }


这是目前采取的最常用的一种方法,相比以上有缺陷的几种做法,使用伪元素after比较保险。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,806评论 1 92
  • 1. 什么是浮动 浮动就是使用 css当中的float 属性对一个元素进行设置,使其脱离文档流,移动到其父容器的左...
    丶傲慢先生阅读 438评论 0 0
  • 盒子的高度问题 1.标准流中盒子的高度可以被内容高度撑起来;2.浮动流中浮动的内容不能撑起盒子的高度; 为什么要清...
    壹点微尘阅读 397评论 0 0
  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,899评论 0 1
  • 文 | @狐狸先森 木心有首诗叫“从前慢”,他说从前慢得“一生只够爱一个人”。而且现在,大家流行“一言不合就分手”...
    猫七七四十九阅读 678评论 0 0