CSS-清除浮动


CSS清除浮动

为什么需要清除浮动

​ 当容器高度为auto的时候,且容器内包含浮动的元素,这种情况下容器不能自动拉伸适应内容的高度,使得内容溢出到容器外面,这种现象称为浮动溢出。

​ 没有使用浮动

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>css为什么需要清除浮动</title>
  <style>
    .box {
      width: 500px;
      background-color: skyblue;
    }

    .div1 {
      height: 300px;
      width: 100px;
      background-color: pink;
    }

    .div2 {
      height: 400px;
      width: 200px;
      background-color: purple;

    }

    .footer {
      height: 100px;
      background-color: black;
    }
  </style>
</head>

<body>

  <div class="box">
    <div class="div1">1</div>
    <div class="div2">2</div>
  </div>
  <div class="footer">footer</div>

</body>

</html>

​ 父盒子没有定义高度,子盒子定义了高度,父盒子可以自适应高度。

​ 当使用浮动,父盒子不能自适应高度。

清除浮动的方法

  • 使用带clear属性的空元素(额外标签法)

    在浮动元素后加一个空元素,例如<div class='clear'></div> ,并在css中.clear{clear:both},就可以清除浮动。

    这种方法代码少,但添加了空白标签,代码不优雅,后期不容易维护。

  • 给父元素添加overflow属性

    给父元素添加overflow:hiddenoverfloaw:auto,可以清除浮动。

  • 使用:after伪元素

    在父级元素的最后添加一个:after伪元素

​ 在父元素添加类似如下的样式

.clearfix:after {
    content: '.';
    height: 0;
    display: block;
    clear: both;
}
//兼容IE6、7
.clearfix {
    *zoom: 1; 
} 

​ 伪元素的displayblock ,它实际上是一个不可见的块级元素,这是第一种方法的变形使用。

​ 需要兼容IE6、7.

  • 使用双伪元素

    完全闭合浮动

    ​ 父元素添加类似的样式

    .clearfix:before, .clearfix:after {
            content: ""; 
            display: table;
        }
        .clearfix:after {
            clear: both;
        }
        //兼容IE6、7
        .clearfix {
            *zoom: 1;
        }

文章作者: 木叶勇
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 木叶勇 !
 上一篇
快捷化-VSCode中React代码块快速生成 快捷化-VSCode中React代码块快速生成
VSCode快速生成代码块–以React为例 写React项目的时候,有时候需要快速生成模板代码,比如生成一个组件,打出几个关键字就可以引入基本依赖和基本代码块。 利用Snippets,设置用户代码块 起步 文件 –> 首选项 –&
2020-05-07
下一篇 
mongoDB异步取数据 mongoDB异步取数据
mongoDB异步获取数据 介绍一下背景 ​ 这四个订单分类下面有若干订单,我需要统计出来可视化展示,我先获取了分类的唯一标识_id,把它们放入到一个数组中,接下来就是要获取每个分类下面有多少订单数目 ​ 接下来就是我的骚操
2020-04-29
  目录