CSS清除float浮动 | 青训营

64 阅读1分钟

CSS清除float浮动

浮动是因为使用了float:leftfloat:right或两者都有而产生的浮动,导致样式缺失或者不正确显示等问题

浮动产生负作用

1.背景不能显示

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

2.边框不能撑开

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

3.margin padding设置值不能正确显示

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

解决办法

1. 添加新的元素,使用clear: both

  .clear{clear: both;}
  <div class="box">
      <div class="red">1</div>
      <div class="sienna">2</div>
      <div class="blue">3</div>
      <div class="clear"></div>
  </div>

2.给父元素设置overflow

  .over-flow{ overflow: auto; zoom: 1;}/*zoom1; 是在处理兼容性问题*/
  <body>
  <div class="box over-flow">
      <div class="red">1</div>
      <div class="sienna">2</div>
      <div class="blue">3</div>
  </div>

3.给父元素设置after伪元素

  .clearfix:after{
      content:"";/*设置内容为空*/
      height:0;/*高度为0*/
      line-height:0;/*行高为0*/
      display:block;/*将文本转为块级元素*/
      visibility:hidden;/*将元素隐藏*/
      clear:both;/*清除浮动*/
  }
  .clearfix{
      zoom:1;/*为了兼容IE*/
  }
  <body>
  <div class="box clearfix">
      <div class="red">1</div>
      <div class="sienna">2</div>
      <div class="blue">3</div>
  </div>
  </body>

4.使用双伪元素清除浮动

  
  .clearfix:before,.clearfix:after {
       content: "";
       display: block;
       clear: both;
  }
  .clearfix {
       zoom: 1;
   }