css中浮动的清除

为什么要清除浮动呢?

因为浮动会使当前标签产生向上浮的效果,同时会影响到前后标签、父级标签的位置及 width height 属性。

而且同样的代码,在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了。

解决浮动引起的问题有多种方法,但有些方法在浏览器兼容性方面还有问题。

方式一、父级div定义 height
.div1 {
            background: #000080;
            border: 1px solid red;
            height: 200px;
        }
        .left {
            float: left;
            width: 20%;
            margin: 0 auto;
            height: 200px;
            background: #DDD
        }
        .right{
            float: right;
            width: 30%;
            height: 200px;
            background: #DDD
        }

<div class="div1">
        <div class="left">Left</div>
        <div class="right">Right</div>
</div>

原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题。

优点:简单,代码少,容易掌握

缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题

建议:不推荐使用,只建议高度固定的布局时使用

方式二、结尾处加空div标签 clear:both
.div1 {
            background: #000080;
            border: 1px solid red;
   		}
        .left {
            float: left;
            width: 20%;
            height: 100px;
            margin: 0 auto;
            background: #DDD
        }
        .right{
            float: right;
            width: 30%;
            height: 60px;
            background: #DDD
        }
        .clear{
            clear:both
        }
 

<div class="div1">
        <div class="left">Left</div>
        <div class="right">Right</div>
        <div class="clear"></div>
    </div>

原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度

优点:简单,代码少,不容易出现怪问题

缺点:页面如果浮动布局多,就要增加很多空div,让布局很少空洞

建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法

方式三、父级div定义 伪类:after 和 zoom
.div1 {
            background: #000080;
            border: 1px solid red;
        }

        .left {
            float: left;
            width: 20%;
            height: 100px;
            margin: 0 auto;
            background: #DDD
        }

        .right {
            float: right;
            width: 30%;
            height: 60px;
            background: #DDD
        }

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

<div class="div1 clear">
        <div class="left">Left</div>
        <div class="right">Right</div>
   </div>

原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题

优点:浏览器支持好,不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)

缺点:代码多,要两句代码结合使用,才能让主流浏览器都支持。

建议:强力推荐使用,建议定义公共类,以减少CSS代码。

方式四、父级div定义 overflow:hidden
、.div1 {
        background: #000080;
        border: 1px solid red;
        overflow: hidden
、}

、.left {
        float: left;
        width: 20%;
        height: 100px;
        margin: 0 auto;
        background: #DDD
}

.right {
        float: right;
        width: 30%;
        height: 60px;
        background: #DDD
}
 

<div class="div1">
        <div class="left">Left</div>
        <div class="right">Right</div>
</div>

原理:overflow:hidden属性相当于是让父级紧贴内容,这样即可紧贴其对象内内容(包括使用float的div盒子),从而实现了清除浮动

优点:简单,代码少

缺点:不能和position配合使用,因为超出的尺寸的会被隐藏。

建议:只推荐没有使用position或对overflow:hidden。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值