CSS清除浮动的方法整合

之前学习css过程中遇到css浮动的问题,现在将css清除浮动方法整合如下:
浮动没清除时代码跟效果:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>给盒子设置height清除浮动</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            list-style: none;
        }
        /*div不设置高*/
        div{
            border: 1px solid red;
        }
        li{
            float: left;
            width: 80px;
            height: 30px;
            background: green;
        }
    </style>
</head>
<body>
    <div class="box1">
        <ul>
            <li>html</li>
            <li>css</li>
            <li>js</li>
            <li>框架</li>
        </ul>
    </div>
    <div class="box2">
        <ul>
            <li>英语</li>
            <li>数学</li>
            <li>化学</li>
            <li>生物</li>
        </ul>
    </div>
</body>
</html>

这里写图片描述

1.下面给div添加高度,清除浮动:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>给盒子设置height清除浮动</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            list-style: none;
        }

        div{
            /*给div增加高度清除浮动*/
            height: 100px;
            border: 1px solid red;
        }
        li{
            float: left;
            width: 80px;
            height: 30px;
            background: green;
        }
    </style>
</head>
<body>
    <div class="box1">
        <ul>
            <li>html</li>
            <li>css</li>
            <li>js</li>
            <li>框架</li>
        </ul>
    </div>
    <div class="box2">
        <ul>
            <li>英语</li>
            <li>数学</li>
            <li>化学</li>
            <li>生物</li>
        </ul>
    </div>
</body>
</html>

这里写图片描述

2.使用clear:both;属性清除浮动:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>给盒子设置height清除浮动</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            list-style: none;
        }

        div{
            border: 1px solid red;
        }
        li{
            float: left;
            width: 80px;
            height: 30px;
            background: green;
        }
        .box2{
            clear: both;
            /*这种方法margin失效*/
            /*margin-top: 10px;*/
        }

    </style>
</head>
<body>
    <div class="box1">
        <ul>
            <li>html</li>
            <li>css</li>
            <li>js</li>
            <li>框架</li>
        </ul>
    </div>

    <!-- 给后面的盒子增加clear:both属性清除浮动 -->
    <div class="box2">
        <ul>
            <li>英语</li>
            <li>数学</li>
            <li>化学</li>
            <li>生物</li>
        </ul>
    </div>
</body>
</html>

这里写图片描述
注意:此方法的缺陷是margin属性失效。

3.使用隔墙法清除浮动:即是在两盒子之间增加一个盒子

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>给盒子设置height清除浮动</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            list-style: none;
        }

        div{
            border: 1px solid red;
        }
        li{
            float: left;
            width: 80px;
            height: 30px;
            background: green;
        }

        .cl{
            clear: both;
        }
        .h1{
            height: 10px;
            /*IE6的hack:用于处理IE6的微型盒子兼容性问题*/
            _font-size:0;
        }
    </style>
</head>
<body>
    <div class="box1">
        <ul>
            <li>html</li>
            <li>css</li>
            <li>js</li>
            <li>框架</li>
        </ul>
    </div>

    <!-- 增加一个div如一堵墙,此方法margin也失效,但可以给div增加一个高来替代margin的作用-->
    <div class="cl h1"></div>

    <div class="box2">
        <ul>
            <li>英语</li>
            <li>数学</li>
            <li>化学</li>
            <li>生物</li>
        </ul>
    </div>
</body>
</html>

这里写图片描述
注意:此方法margin也失效,但可以通过增加“墙”的高度来达到margin的效果。且此方法父元素不能被儿子元素撑出高

4.内墙法清除浮动:即是将“墙”移到上一个div内部

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>给盒子设置height清除浮动</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            list-style: none;
        }

        div{
            border: 1px solid red;
        }
        li{
            float: left;
            width: 80px;
            height: 30px;
            background: green;
        }

        .cl{
            clear: both;
        }
        .h1{
            height: 10px;
        }
    </style>
</head>
<body>
    <div class="box1">
        <ul>
            <li>html</li>
            <li>css</li>
            <li>js</li>
            <li>框架</li>
        </ul>
    </div>

    <!-- 增加一个div如一堵墙,此方法margin也失效,但可以给div增加一个高来替代margin的作用-->
    <div class="cl h1"></div>

    <div class="box2">
        <ul>
            <li>英语</li>
            <li>数学</li>
            <li>化学</li>
            <li>生物</li>
        </ul>
    </div>
</body>
</html>

这里写图片描述
注意:此方法跟“隔墙法”类似,但该方法能撑出高。

5.给父元素增加overflow:hidden;属性来清除浮动:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
    <title>给盒子设置height清除浮动</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            list-style: none;
        }

        div{
            border: 1px solid red;
            overflow: hidden;
            /*IE6不兼容overflow:hidden;属性,使用_zoom解决此问题*/
            _zoom:1;
        }
        li{
            float: left;
            width: 80px;
            height: 30px;
            background: green;
        }
        /*此方法margin生效*/
        .box2{
            margin-top: 10px;
        }
    </style>
</head>
<body>
    <div class="box1">
        <ul>
            <li>html</li>
            <li>css</li>
            <li>js</li>
            <li>框架</li>
        </ul>
    </div>

    <div class="box2">
        <ul>
            <li>英语</li>
            <li>数学</li>
            <li>化学</li>
            <li>生物</li>
        </ul>
    </div>
</body>
</html>

这里写图片描述
注意:该方法IE6不兼容,需用_zoom:1;属性使IE6兼容,并且该方法margin生效。

以上是清除浮动的方法,仅供参考~!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值