网页前端后台技巧(CSS+HTML)Web前端之路首页投稿(暂停使用,暂停投稿)

CSS浮动与浮动清除(BFC)

2017-03-23  本文已影响176人  猫仔哦

浮动

1. 什么是浮动

当元素的 float 属性不为 none 时就产生了浮动。

<div class="float">float</div>
.float {
  float: left;
  width: 100px;
  height: 100px;
  background-color: #ddd;
}

2. 浮动的影响

  1. 浮动会使元素脱离文档流,具体表现为:

    • 父元素高度塌陷,即不会包含浮动元素。

      比如上面的代码就会表现为 父元素高度塌陷
    • 文本环绕。

      文本环绕效果
      可以注意到这里.normal元素的宽度覆盖了.float元素,但是.float元素下是没有文本的,也就是说文本被“挤”出来了,这是因为它虽然会脱离文档流,但是不会脱离文本流。这个效果也是float属性的本意。其代码如下:
      <body>
        <div class="float">float</div>
        <div class="normal">正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素正常元素</div>
      </body>
      
      body {
        background-color: #ccc;
      }
      .float {
        float: left;
        width: 100px;
        height: 100px;
        background-color: #ddd;
      }
      .normal {
        background-color: #fff;
      }
      
  2. 浮动元素的外边距不会合并。
    关于外边距合并的相关内容可以戳这里

  3. 元素一旦浮动便会变成行内块元素,即 display: inline-block

3. 浮动的应用

清除浮动

在子元素上清除

这里我只写不会产生无意义标签的方法。

在父元素上清除,即BFC

BFC(Block Formatting Context),即块级格式上下文,它的官方解释是:

浮动、绝对定位元素(positionabsolutefixed)、行内块元素 display:inline-block、表格单元格 display:table-cell、表格标题 display:table-caption 以及 overflow 属性值不为 visible 的元素(除了该值被传播到视点 viewport 的情况)将创建一个新的块级格式化上下文。

总结来说它要满足下列条件之一:

  1. float 不为 none
  2. position 不为 staticrelative
  3. displaytable-celltable-captioninline-blockflexinline-flex
  4. overflow 不为 visible

只要给父元素加上以上任意一个属性满足条件,也就是给父元素加上 BFC 就能清除子元素的浮动。

参考资料

上一篇下一篇

猜你喜欢

热点阅读