揭开web前端的面纱

CSS清浮动

2017-03-02  本文已影响17人  ferrint

关键词:清浮动

原因
浮动是因为使用float:left或float:right,使元素脱离了文档流而产生的浮动。

影响

1、背景不能显示
由于浮动产生,如果对父级设置了(CSS background)背景颜色或背景图片,而父级不能被撑开,所以导致CSS背不能显示。

2、边框不能撑开
如果父级设置了CSS边框属性(css border),由于子级里使用了float属性,产生浮动,父级不能被撑开,导致边框不能随内容而被撑开。

3、margin padding设置值不能正确显示
由于浮动导致父级子级之间设置了css padding、css margin属性的值不能正确表达。特别是上下边的padding和margin不能正确显示。

解决方法

1 . 父级div定义 height

2 . 结尾处加空div标签 clear:both
* .clearfloat{clear:both}

3 . 父级div定义 伪类:after 和 zoom

 /*清除浮动代码*/ 
.clearfloat:after{
      display:block;
      clear:both;
      content:"";
      visibility:hidden;
      height:0
} 
.clearfloat{zoom:1} 

4 . 父级div定义 overflow:hidden

原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度

*缺点:不能和position配合使用,因为超出的尺寸的会被隐藏。 *

5 . 父级div定义 overflow:auto

原理:必须定义width或zoom:1,同时不能定义height,使用overflow:auto时,浏览器会自动检查浮动区域的高度

*缺点:内部宽高超过父级div时,会出现滚动条。 *

6.父级div 也一起浮动

毫无优点,仅作了解


完美清浮动方法

  .clear:before,.clearafter{
    content: ".";
    line-height: 0;
    display: table;
  }

  .clear:after { 
    overflow: hidden;
    clear: both; 
    visibility: hidden; 
  }/*for w3c*/ 
  
  .clear { 
  zoom:1; 
  }/*for IE*/ 
上一篇 下一篇

猜你喜欢

热点阅读