clearfix 清除浮动的几种方法、作用及总结

耗尽温柔 提交于 2020-03-18 11:57:54

某厂面试归来,发现自己落伍了!>>>

clearfix 清除浮动

浮动现象

浮动

想象一下,浮动是可以向左或向右移动,直到它的外边缘碰到其他框或另一个浮动框的边框为止。


浮动的效果:

<body>
    <div class="container">
        <div class="left"> 

        </div>
       <div class="right">

        </div>
    </div>
</body>
<style>
    .container{
        width: 300px;
        border: 1px solid #000;
        background-color: gray;
    }
  .left{
        width: 100px;
        height: 100px;
        background-color: red;
        float: left;
    }
    .right{
        width: 100px;
        height: 100px;
        background-color: blue;
        float: right;
    }
</style>

上述代码的浮动效果如下:

现象:

可见子元素没有撑开父容器,使父元素高度坍塌


清楚浮动的方法

清楚浮动大致有四种方式:

  • 添加以clear命名的class
  • 在父容器里添加overflow:hidden样式
  • 在父容器里添加overflow:auto样式
  • 添加class以clearfix命名的after伪元素

添加以clear命名的class:

在浮动元素后添加clear命名的<div>,给div添加.clear{clear:both}样式

代码如下:

<body>
    <div class="container">
        <div class="left"> 

        </div>
        <div class="right">

        </div>
       <div class="clear">

       </div>
    </div>
</body>
<style>
    .container{
        width: 300px;
        border: 1px solid #000;
        background-color: gray;
    }
  .left{
        width: 100px;
        height: 100px;
        background-color: red;
        float: left;

    }
    .right{
        width: 100px;
        height: 100px;
        background-color: blue;
        float: right;
    }
    .clear{
        clear:both;
    }

效果:


在父容器里添加overflow:hidden样式:

父元素样式中添加overflow:hidden后,再加上 zoom:1;
代码如下:

<body>
    <div class="container">
        <div class="left"> 

        </div>
        <div class="right">

        </div>
    </div>
</body>
<style>
    .container{
        width: 300px;
        border: 1px solid #000;
        background-color: gray;
        overflow:hidden;
        zoom:1;
    }
  .left{
        width: 100px;
        height: 100px;
        background-color: red;
        float: left;
    }
    .right{
        width: 100px;
        height: 100px;
        background-color: blue;
        float: right;
    }
</style>

其结果:


在父容器里添加overflow:auto样式:

和添加overflow:hidden方法一样,只是hidden属性换成auto,后也需加 zoom:1;
替换代码如下:

    .container{
        width: 300px;
        border: 1px solid #000;
        background-color: gray;
        overflow:auto;
        zoom:1;
    }

其清除浮动效果一样:


添加class以clearfix命名的after伪元素:

最后一种是个人感觉用起来很方便的一种方式,在css样式中添加如下代码:

.clearfix:after{
    display:block;
    clear:both;
    content:"";
    visibility:hidden; 
    height:0;
} 
.clearfix{zoom:1}

HTML中在class后添加 ,直接调用,方式如下:

<style>
    .container{
        width: 300px;
        border: 1px solid #000;
        background-color: gray;
    }
  .left{
        width: 100px;
        height: 100px;
        background-color: red;
        float: left;
    }
    .right{
        width: 100px;
        height: 100px;
        background-color: blue;
        float: right;
    }
    .clearfix:after{
    display:block;
    clear:both;
    content:"";
    visibility:hidden; 
    height:0;
} 
.clearfix{zoom:1}
</style>

清除效果:


总结:

  1. 在浮动元素后添加clear命名的<div>,给div添加.clear{clear:both}样式:
  • 优点:简单,代码少
  • 缺点:增加页面标签,造成结构混乱
  • 推荐指数:☆

2.在父容器里添加overflow:hidden或overflow:auto样式:

  • 优点:只需在父容器中加入代码,操作简单
  • 缺点:增加样式标签
  • 推荐指数:☆☆☆
  1. 添加class以clearfix命名的after伪元素:
  • 优点:设置公共类,减少css代码,直接套用
  • 缺点:clearfix的class需要添加zoom: 1
  • 推荐指数:☆☆☆☆☆
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!