如何清除float浮动

网页设计时,当在css样式中对某个元素设置浮动时,该元素就会脱离文档流,从而影响到页面排版布局。例如,设置浮动前:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #box1{
            width:100px;
            height: 100px;
            background-color: brown;
        }
        #box2{
            width:200px;
            height: 200px;
            background-color:blue;
        }
    </style>
</head>
<body>
    <div id="box1"></div>
    <div id="box2"></div>
</body>
</html>

效果如图:
在这里插入图片描述
在选择器为#box1的css中添加设置浮动的代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #box1{
            width:100px;
            height: 100px;
            background-color: brown;
            float:left;
        }
        #box2{
            width:200px;
            height: 200px;
            background-color:blue;
        }
    </style>
</head>
<body>
    <div id="box1"></div>
    <div id="box2"></div>
</body>
</html>

效果如图:
在这里插入图片描述

为了是原来排版不受影响,可在#box2选择器的css中添加clear:left(或者是right或者是both,看具体情况)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #box1{
            width:100px;
            height: 100px;
            background-color: brown;
            float:left;
        }
        #box2{
            width:200px;
            height: 200px;
            background-color:blue;
            clear:left;
        }
    </style>
</head>
<body>
    <div id="box1"></div>
    <div id="box2"></div>
</body>
</html>

效果如图:
在这里插入图片描述

当然这是元素与元素之间是上下排列关系,如果是嵌套关系,当父元素不设置宽高和浮动,子元素不浮动但设置宽高时,父元素的高默认会被子元素的高撑开,但子元素设置浮动后:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #box1{
            background-color: brown;
            border: black 1px solid;
            
        }
        #box2{
            width:200px;
            height: 200px;
            background-color:blue;
            float: left;
            
        }
        /* #box1:after{
            content: '';
            clear: left;
            display: block;
        } */
    </style>
</head>
<body>
    <div id="box1">
        <div id="box2"></div>
    </div>
</body>
</html>

效果是:
在这里插入图片描述

父元素变成了一条边框,浮动的子元素无法自然撑开父元素的高度,为了清除子元素浮动带来的影响,推荐在使用after伪类选择器,具体代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #box1{
            background-color: brown;
            border: black 1px solid;
        }
        #box2{
            width:200px;
            height: 200px;
            background-color:blue;
            float: left;
            
        }
        #box1:after{
            content: '';
            clear: left;
            display: block;
        }
    </style>
</head>
<body>
    <div id="box1">
        <div id="box2"></div>
    </div>
</body>
</html>

由于在after伪类选择器中添加的内容是内联样式的,因此需要添加display:block,这样就可以把父元素的高度撑开,效果如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值