IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

CSS 简易浮动清除方法讨论

小小子,simaopig 2010-06-27 22:08:01 累计浏览 3,003 次
本机暂存
CSS白痴再来讨论一下CSS简易浮动清除的方法。没办法,菜鸟入门,一切都得从头学。大家认为很菜,很土的东西,我也得从头接触。不过我认为这一切都是值得的。

到底发生了什么?

首先,大家先看图片,这里我要告诉大家我想得到什么样的效果。
原图已失效

其中html代码和样式定义如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <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;
            }
        </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>

代码是写完了,可是实际运行效果却是不尽人意:

原图已失效

去网上查了一下,这就是著名的浮动问题。我们需要做的就是将浮动效果给清除。

咋个解决方法

网上有好多解决办法,但是普遍是在这三类中:

  1. 在浮动的div外层,增加含有clear:both样式定义的div元素
  2. 使用overflow:auto,但是这个传说中会引起一些很杯具的效果
  3. 使用after伪元素进行处理,同时对于IE使用hack

首先第二种,既然传说中会杯具,那么我肯定不用。而第一种,对于我这种有类似html洁癖的人也肯定不会使用,平白无故增加一个div标签,实在感觉有些划不来,还有些恶心。

所以我彩after伪元素来处理,具体处理后的代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <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;}

至于这两种小技巧哪种更好些,本人倒没什么感觉。如果喜欢装X的可能会选用”点”的方式。如果喜欢简洁的可能会选用加空格的方式吧?不过不管咋样,问题解决了。

同分类推荐文章

  1. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. 50个活力和动感的网页设计-颜色的灵感 (累计阅读 34,442)
  2. 视觉设计前瞻实用性研究(PNVD) 第二期 (累计阅读 12,977)
  3. 各公司对前端开发的职位描述 (累计阅读 10,405)
  4. iframe大小自适应 (累计阅读 10,057)
  5. 浏览器的渲染原理简介 (累计阅读 8,377)
  6. 解决IE6从Nginx服务器下载图片不Cache的Bug (累计阅读 8,357)
  7. 程序员眼里IE浏览器是什么样的 (累计阅读 8,011)
  8. 2010网页设计趋势 (累计阅读 7,818)
  9. Web前端工程师编程能力飞升之路 (累计阅读 7,691)
  10. 颜色的代码表达式 (累计阅读 7,665)