2. 使用 ::after 使用 CSS clear、content 和 display 属性

只要我们可以控制边距和填充(否则可能会看到滚动条),overflow:auto clearfix 就可以很好地工作。
但是,较新的 clearfix hack 使用起来更安全,并且大多数网页都使用以下代码:

.clearfix::after {
  content: "";
  clear: both;
  display: table;
}

其中我们使用 ::after 伪元素。

clear 属性设置为“both”,表示左右两边都不允许浮动元素。

display 属性设置为“table”以使元素表现得像 HTML <table> 元素。

并且内容为空。

使用 clear、display 和 content 属性清除浮动的示例:

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
    <style>
      div {
        border: 2px solid #1c87c9;
        padding: 8px;
      }
      .noclearfix {
        float: right;
      }
      .clearfix::after {
        content: "";
        clear: both;
        display: table;
      }
      .img {
        float: right;
      }
      p {
        clear: right;
      }
    </style>
  </head>
  <body>
    <div>
      <img class="noclearfix" src="/notebook.jpeg" alt="notebook" width="200" height="185"> 经历过风雨,才懂得阳光的温暖。 今天很残酷,明天很残酷,后天很美好。很多人死在了明天的夜里。

    </div>
    <p>Add the new clearfix hack.</p>
    <div class="clearfix">
      <img class="img" src="/notebook.jpeg" alt="notebook" width="200" height="185"> 经历过风雨,才懂得阳光的温暖。 今天很残酷,明天很残酷,后天很美好。很多人死在了明天的夜里。

    </div>
  </body>
</html>

3. 使用带有“flow-root”的 CSS 显示属性

实际上,我们已经到了不再需要 clearfix 的时候了。
clearfix 正在失去一些相关性。
Grid 和 Flexbox 正在填补网络高级布局的空白。

有一种新方法可以使用新的显示模式规则(称为 flow-root)用一行代码替换 clearfix hack。

以这种方式使用流根:

.clearfix {
  display: flow-root;
}

使用 display 属性的“flow-root”值清除浮动的示例:

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
    <style>
      div {
        border: 2px solid #8ebf42;
        padding: 8px;
      }
      .noclearfix {
        float: right;
      }
      .clearfix {
        display: flow-root;
      }
      .img {
        float: right;
      }
      p {
        clear: right;
      }
    </style>
  </head>
  <body>
    <div>
      <img class="noclearfix" src="/notebook.jpeg" alt="notebook" width="200" height="185"> 经历过风雨,才懂得阳光的温暖。 今天很残酷,明天很残酷,后天很美好。很多人死在了明天的夜里。

    </div>
    <p>Add display: flow-root.</p>
    <div class="clearfix">
      <img class="img" src="/notebook.jpeg" alt="notebook" width="200" height="185"> 经历过风雨,才懂得阳光的温暖。今天很残酷,明天很残酷,后天很美好。很多人死在了明天的夜里。

    </div>
  </body>
</html>

使用显示属性的 clearfix hack 和“flow-root”值的示例:

<!DOCTYPE html>
<html>
  <head>
    <style>
      .container {
        border: 1px solid #3bc9db;
        border-radius: 5px;
        background-color: #e3fafc;
        width: 400px;
        padding: 5px;
      }
      .container2::after {
        content: "";
        display: block;
        clear: both;
      }
      .container3 {
        display: flow-root;
      }
      .item {
        height: 100px;
        width: 100px;
        background-color: #1c87c9;
        border: 1px solid #eee;
        border-radius: 5px;
        float: left;
      }
      .clear {
        clear: both;
      }
      .wrapper {
        max-width: 600px;
        margin: 40px auto;
      }
    </style>
  </head>
  <body>
    <div>
      <div class="wrapper">
        <h2>Default behavior</h2>
        <p>This item is a wrapper, which contains a left-floating block.</p>
        <div class="container container1">
          <div class="item"></div>
          Example one
        </div>
        <p>
           当浮动元素脱离流时,包含块上的边框仅软件包文本。
         </p>
         <p>
           除非我们将其设置为清除,否则框后面的内容将上升并环绕浮动。
         </p>
         <h2 class="clear">clearfix hack</h2>
         <p>
           在此项目中,我们使用 clearfix hack 使包装器清除浮动项目。
         </p>
        <div class="container container2">
          <div class="item"></div>
          Example two
        </div>
        <h2>Using display: flow-root</h2>
        <p>
          CSS 现在有一种方法可以使元素清晰浮动。 显示的值设置为flow-root,我们的浮动框就被清除了。
        </p>
        <div class="container container3">
          <div class="item"></div>
          Example three
        </div>
      </div>
    </div>
  </body>
</html>

1.使用CSS溢出属性

当一个元素大于它的包含元素时,它是浮动的,它会溢出它的容器。

我们可以将带有“auto”值的溢出属性添加到包含元素以解决此问题。

使用溢出属性清除浮点数的示例:

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
    <style>
      div {
        border: 2px solid #1c87c9;
        padding: 8px;
      }
      .noclearfix {
        float: right;
      }
      .clearfix {
        overflow: auto;
      }
      p {
        clear: right;
      }
      .img {
        float: right;
      }
    </style>
  </head>
  <body>
    <div>
      <img class="noclearfix" src="/notebook.jpeg" alt="notebook" width="200" height="185"> 经历过风雨,才懂得阳光的温暖。 今天很残酷,明天很残酷,后天很美好。很多人死在了明天的夜里。

    </div>
    <p>Add overflow: auto;</p>
    <div class="clearfix">
      <img class="img" src="/notebook.jpeg" alt="notebook" width="200" height="185"> 经历过风雨,才懂得阳光的温暖。今天很残酷,明天很残酷,后天很美好。很多人死在了明天的夜里。

    </div>
  </body>
</html>
css如何清除浮动?什么是 Clearfix?

clearfix 是父元素自动清除或者修复其元素的一种方式,因此不需要另外的标记。
在浮动布局中,它通常用于元素浮动以水平堆叠的地方。

这是一个 CSS 技巧,解决了当两个浮动元素彼此相邻堆叠时发生的错误。

我们可能要做的就是在主内容块的左侧放置一个侧边列,但结果是,将有两个元素相互重叠和折叠。
该错误在浏览器之间不一致。
因此,发明了 clearfix 来解决此类问题。

其中我们将讨论 3 个 clearfix 技巧。

日期:2020-06-02 22:15:00 来源:oir作者:oir