码迷,mamicode.com
首页 > 其他好文 > 详细

清除浮动原理

时间:2020-05-05 10:36:33      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:有关   浮动   display   lock   block   使用   增加   方法   width   

在css中,我们有时会用到浮动属性。

简单来说,标准流文档中,块元素会占据整行来显示,比如div,h标签等。后面的标签会依次往后。

但是用了浮动之后,就会脱离文档流,意味着后面的标签可能会被挡住,引起布局混乱。因为浮动元素无法撑起父元素的高度(高度塌陷)。

那么又想使用浮动属性,又想让后面元素按标准文档流布局应该怎么办呢?

此时,就需要使用清除浮动的方法。

清除浮动就是让父元素高度恢复到正常状态,浮动元素后面的元素能按正常文档流来继续显示。

清除浮动前:

技术图片

清除浮动后:

技术图片

 

 

 清除浮动的方法也有很多。

1、浮动元素后面添加一个空标签。

  不建议使用,因为会增加很多无意义标签。与代码语义化的原则相违背。

  <div class="wrap">
    <div class="box float-left">左浮动</div>
    <div class="box float-right">右浮动</div>
    <div class="clear-float"></div>

    <div>我位于浮动元素后面</div>
  </div>
 .float-left {
      float: left;
    }
    .float-right {
      float: right;
    }
    .clear-float {
      clear: both;
    }

2、父元素设置overflow:hidden属性。如图:

技术图片

会出现这种非常规布局,谨慎使用。

3、after 伪类。最常用。

  不用添加新标签,给浮动元素的父元素添加。

布局:

  <div class="wrap">
    <div class="box float-left">左浮动</div>
    <div class="box float-right">右浮动</div>
  </div>
  <div>我位于浮动元素后面</div>

清除前:

技术图片

清除后:

技术图片

 

 css代码:

  .wrap::after {
      content: ‘saf‘;
      display: block;
      clear: both;
      height: 0;
      visibility: hidden;
    }

原理如下:

clear 属性是不让元素的周围有浮动元素。属性值可以为left、right、both、none、inherit。

clear 属性只能作用在块级元素上。因此要设置 display:block。clear:both,则让清除两侧的浮动。

一般常写的时候还会加上后面两句:height:0;visibility:hidden;

这两句和content的值有关,如果content有值而你不想显示,则可以加上这两句,如果content为空,则不加也可以。

如果你需要显示content内容,则不可以加。

技术图片

 

清除浮动原理

标签:有关   浮动   display   lock   block   使用   增加   方法   width   

原文地址:https://www.cnblogs.com/xguoz/p/12829490.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!