清除浮动的各种方式

网络整理 - 07-27

CSS清除浮动的各种方式。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">

<html xmlns="">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>建站学</title>

<style>

body, div, h2 {

        margin:0;

        padding:0;

        font-size:12px;

        font-family:arial;

        line-height:1.8;

}

h2 {

        height:40px;

        line-height:40px;

        text-align:center;

        font-size:20px;

        font-weight:700;

}

.Container {

        margin:30px auto;

        width:600px;

        overflow:hidden;

        padding:20px;border:2px solid #000

}

.Code {

        border:1px solid #fff;

        margin:10px 0;

        padding:10px;

        background:#ccc;

}

.Boxer {

        border:1px solid #ccc;

        clear:both;

        background:#f00;

}

.Sider {

        float:left;

}

.Clear1 {

        display:block;

        clear:both;

        line-height:0;

        font-size:0;

        height:0;

        overflow:hidden;

}

.Clear2:after {

        content:'.';

        display:block;

        height:0;

        clear:both;

        overflow:hidden;

        visibility:hidden;

}

.Clear2 {zoom:1;}

.Clear3 {

        overflow:auto;

        zoom:1;

}

.Clear4 {

        overflow:hidden;

        width:100%;

}

</style>

</head>

<body>

<h2>今天想对大家一直不太理解的浮动,做一个简单的教程,希望同学们通过我这个简单的教程,大概理解浮动以及清除浮动。</h2>

<h2>下次给大家写一些浮动引起的BUG,以及解决方法。</h2>

<div class="Container">

        <div class="Code">

                .Boxer {border:1px solid #ccc;clear:both;background:#f00;} .Sider {float:left;}

        </div>

        <div class="Boxer">

                <div class="Sider">嗯,我是浮动的。未清除浮动之前。在除了IE6,7的浏览器中,此浮动元素父级,无法自适应高度。</div>

        </div>

</div>

<div class="Container">

        <div class="Code">

                .Clear1 {display:block;clear:both;line-height:0;font-size:0;height:0;overflow:hidden;}

        </div>

        <div class="Boxer">

                <div class="Sider">嗯,我是浮动的,这是一种清除浮动的方法,缺点是增加了一个dom元素来清除浮动</div>

                <b class="Clear1">清除浮动</b> </div>

</div>

<div class="Container">

        <div class="Code">

                .Clear2:after {content:'.';display:block;height:0;clear:both;overflow:hidden;visibility:hidden;} .Clear2 {zoom:1;}

        </div>

        <div class="Boxer Clear2">

                <div class="Sider">嗯,我是浮动的,这种是另一种清除浮动的方法,使用率较高,是用了css选择器中的:after伪类,此伪类在IE6,7中无法识别。注意,此方法的样式必须在浮动元素的父级元素中使用。增加zoom:1属性,是在IE6中适用,消除hashlayout</div>

        </div>

</div>

<div class="Container">

        <div class="Code">

                .Clear3 {overflow:auto;zoom:1;}

        </div>

        <div class="Boxer Clear3">

                <div class="Sider">嗯,我是浮动的,这种是另一种清除浮动的方法,使用率也不错,用的overflow:auto的方式。注意,此方法的样式必须在浮动元素的父级元素中使用。增加zoom:1属性,是在IE6中适用,消除hashlayout</div>

        </div>

</div>

<div class="Container">

        <div class="Code">

                .Clear4 {overflow:hidden;width:100%;}

        </div>

        <div class="Boxer Clear4">

                <div class="Sider">嗯,我是浮动的,这种是另一种清除浮动的方法,使用率也不错,用的overflow:hidden;+定宽的方式。注意,此方法的样式必须在浮动元素的父级元素中使用,并且给父级定宽、不一定非得100%。</div>

        </div>

</div>

</body>

</html>