龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > div+css/html >

css中清除浮动方法介绍

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
本文章介绍了关于超简单的关于在css中如何快速的清除浮动,有需要学习的同学可参考一下 代码如下 style .container { border: 3px solid #000; width: 600px; background-color: #eee; margin-bottom:50px; } .flo
本文章介绍了关于超简单的关于在css中如何快速的清除浮动,有需要学习的同学可参考一下

 

 代码如下
   <style>
            .container {
                border: 3px solid #000;
                width: 600px;
                background-color: #eee;
                margin-bottom:50px;
            }
           
            .floatedbox {
                float: left;
                border: 3px solid #bbb;
                width: 125px;
                height: 125px;
                background-color: #fff;
                margin-right: 1em;
                padding: 0 10px;
            }
        </style>
    </head>
    <body>
        <div class="container">
            <div class="floatedbox">
                <p>
                    floated box
                </p>
            </div>
            <h3>Container 1</h3>
            <p>
                (<em>without</em>
                easy clearing)
            </p>
        </div>
    </body>
</html>


去网上查了一下,这就是著名的浮动问题。我们需要做的就是将浮动效果给清除。
咋个解决方法
网上有好多解决办法,但是普遍是在这三类中:
在浮动的div外层,增加含有clear:both样式定义的div元素
使用overflow:auto,但是这个传说中会引起一些很杯具的效果
使用after伪元素进行处理,同时对于IE使用hack
首先第二种,既然传说中会杯具,那么我肯定不用。而第一种,对于我这种有类似html洁癖的人也肯定不会使用,平白无故增加一个div标签,实在感觉有些划不来,还有些恶心。
所以我彩after伪元素来处理,具体处理后的代码如下:

 代码如下

 

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>简易浮动清除</title>
        <style>
            .container {
                border: 3px solid #000;
                width: 600px;
                background-color: #eee;
                margin-bottom:50px;
            }
           
            .floatedbox {
                float: left;
                border: 3px solid #bbb;
                width: 125px;
                height: 125px;
                background-color: #fff;
                margin-right: 1em;
                padding: 0 10px;
            }
           
            .clearfix:after{
                content:".";
                display:block;
                height:0;
                clear:both;
                visibility:hidden;
            }
           
            * html .clearfix{height:1%;}
        </style>
    </head>
    <body>
        <div class="container">
            <div class="floatedbox">
                <p>
                    floated box
                </p>
            </div>
            <h3>Container 1</h3>
            <p>
                (<em>without</em>
                easy clearing)
            </p>
        </div>

    <div class="container">
            <div class="floatedbox">
                <p>
                    floated box
                </p>
            </div>
            <h3>Container 1</h3>
            <p>
                (<em>without</em>
                easy clearing)
            </p>
        <div style="clear:both;"></div>
        </div>
   
        <div class="clearfix container">
            <div class="floatedbox">
                <p>
                    floated box
                </p>
            </div>
            <h3>Container 1</h3>
            <p>
                (<em>without</em>
                easy clearing)
            </p>
        </div>
    </body>
</html>

问题得以解决。网上还有人说在div标签后面加上一个“点”感觉不爽,而且还要使用visibility来隐藏。所以建议使用如下代码替代:

 代码如下

.clearfix:after{content:"";display:block;height:0;clear:both;}

这样我们的问题就解决了。


精彩图集

赞助商链接