# 什么是浮动?

要了解浮动之前,我们首先需要了解什么是文档流。

float深度理解 (opens new window)

参考链接 (opens new window)

浮动是指的是css的属性float。对于设置了浮动的元素,在页面效果上可以通俗的理解为“这个元素漂起来了(在水上)”,位置发生变化,不按HTML代码中排列。从定义上理解,即该元素脱离了文档流(常规流)。

mdn关于浮动的描述:

float CSS属性指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。该元素从网页的正常流动中移除,尽管仍然保持部分的流动性(与绝对定位相反)。

# 什么是清除浮动?

参考链接 (opens new window)

在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。

clearfix清除浮动

    .clearfix::before,
    .clearfix::after {
      content: "";
      display: table;
    }

    .clearfix::after {
      clear: both;
    }
1
2
3
4
5
6
7
8
9

display: table可以触发BFC块格式化上下文 (opens new window), 限制其内部元素float的不影响到BFC外面.

clear与BFC (opens new window)