css清除浮动的三种方式

2 篇文章 0 订阅
2 篇文章 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;
        }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值