[关闭]
@yacent 2016-07-22T09:43:18.000000Z 字数 1037 阅读 794

清除 浮动的方法

CSS


在CSS属性当中使用了float属性的时候,如果没有清除浮动,那么在有浮动元素的父元素的容器,将无法自动撑开.简单点来说,就是,父元素会发生塌陷的情况

codepen地址:

  1. <style>
  2. .A {
  3. width: 300px;
  4. border: 1px solid red;
  5. }
  6. .B {
  7. background: green;
  8. margin: 0;
  9. }
  10. .C {
  11. background: orange;
  12. }
  13. .D {
  14. background: lime;
  15. border: 2px solid blue;
  16. }
  17. .B, .C, .D {
  18. float: left;
  19. }
  20. </style>
  21. <div class="A">
  22. <div class="B">float left</div>
  23. <div class="C">float right</div>
  24. <div class="D">float</div>
  25. </div>

方法1: clear:both 来清除浮动
clear属性是说,所添加的属性,其一定会在浮动元素的下方,具体如下,需要额外添加多一个div占位

  1. ###对原html进行修改
  2. <div class="A">
  3. <div class="B">float left</div>
  4. <div class="C">float right</div>
  5. <div class="D">float</div>
  6. <div class="E>E</div>
  7. </div>
  8. <style>
  9. .E {
  10. clear: both;
  11. /*为了不让IE具有一定的空间,就像会出现空白格情况一样,建议加上如下的代码*/
  12. font-size: 0;
  13. height: 0;
  14. line-height: 0;
  15. }
  16. </style>

方法2: 使用 overflow属性来清除浮动
在父级元素上进行 overflow属性的设置,如下

  1. .A {
  2. overflow: hidden; /* auto 也是可以的 */
  3. zoom: 1; /*在IE下触发器layout,也可以使用*/
  4. }

方法3: clearfix,即在父级元素上,设置after伪元素来实现清除浮动,实际上也是使用clear属性来进行实现,如下

  1. .A:after {
  2. content: '.';
  3. display: block;
  4. height: 0;
  5. visibility: hidden;
  6. clear: both;
  7. }
  8. .A {
  9. zoom: 1; /* *+height: 1% */
  10. }

其实只需要写 .A:after就可以实现了,但是只写 .A:after时,在跨浏览器兼容问题会存在一个垂直边距叠加的bug,具体原因可以看看这篇文章 arr instanceof Array 并不总是对的

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注