css清除浮动的三种方式

WEB前端 waitig 374℃ 百度已收录 0评论

浮动

文档流

文档流,是指盒子按照html标签编写的顺序依次从上到下,从左到右排列,块元素占一行,行内元素在一行之内从左到右排列,先写的先排列,后写的排在后面,每个盒子都占据自己的位置。

浮动特性

1、浮动元素有左浮动(float:left)右浮动(float:right)两种

2、浮动的元素会向左或向右浮动,碰到父元素边界、浮动元素、未浮动的元素才停下来

3、相邻浮动的块元素可以并在一行,超出父级宽度就换行

4、浮动让行内元素或块元素自动转化为行内块元素

5、浮动元素后面没有浮动的元素会占据浮动元素的位置,没有浮动的元素内的文字会避开浮动的元素,形成文字饶图的效果

6、父元素没有给定高度的前提下,父元素内整体浮动的元素无法撑开父元素,需要清除浮动

7、浮动元素之间没有垂直margin的合并

清除浮动

  • 父级上增加属性overflow:hidden
  • 在最后一个子元素的后面加一个空的div,给它样式属性 clear:both(不推荐)
  • 使用成熟的清浮动样式类,clearfix



.clearfix:after,.clearfix:before{ content: "";display: table;}
.clearfix:after{ clear:both;}
.clearfix{zoom:1;}

清除浮动的使用方法:

.con2{... overflow:hidden}
或者
<div class="con2 clearfix">

初始状态:父级标签con2有高度

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>清除浮动</title>
    <style type="text/css">
        .con,.con2{
            width:300px;
            border:1px solid #000;
            margin:100px auto 0;
            font-size:0;
            height:200px;
        }

        .con a{
            width:50px;
            height:50px;
            display:inline-block;
            background-color:gold;
            font-size:16px;
            margin:10px;
            text-align:center;
            line-height:50px;
            text-decoration:none;            
        }

        .con2 a{
            width:50px;
            height:50px;
            background-color:gold;
            font-size:16px;
            margin:10px;
            text-align:center;
            line-height:50px;
            text-decoration:none;
            float:left;  
        } 
    </style>
</head>

<body>
    <div class="con">
        <a href="">1</a>
        <a href="">1</a>
        <a href="">1</a>
        <a href="">1</a>
        <a href="">1</a>
        <a href="">1</a>
        <a href="">1</a>
        <a href="">1</a>
    </div>

    <div class="con2">
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
    </div>
</body>
</html>


去掉父标签的高度后,父元素内的标签无法撑开父元素

        .con,.con2{
            width:300px;
            border:1px solid #000;
            margin:100px auto 0;
            font-size:0;
            
        }


此时需要清除浮动,
方法一:在父级上增加属性overflow:hidden

        .con2{
            overflow:hidden;
        }



方法二:在最后一个子元素的后面加一个空的div,给它样式属性 clear:both,清除两边浮动(不推荐)

    <div class="con2">
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
        <a href="">12</a>
        <div style="clear:both"></div>
    </div>


方法三:使用清除浮动样式类,clearfix(实际开发较常使用的方法)


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

然后在父标签引用该样式

<div class="con2 clearfix">


附:样式改写为如下方式可以同时清除浮动和塌陷

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

        .clearfix:after{
            clear:both;
        }

        .clearfix{
            zoom:1;
        }


本文由【waitig】发表在等英博客
本文固定链接:css清除浮动的三种方式
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)