DivCSS经验:三种实用CSS清除浮动的方法

转自:http://www.bobd.cn/design/web/htmlcss/200906/32713.html

应用DivCSS网页布局,经常性地会使用到float,很多邪门的事儿都有可能是浮动在作怪,关于清除浮动,在52CSS.com上有过很多介绍。清除浮动是必须要做的,而且随时性地对父级元素清除浮动的做法也被认为是书写CSS的良好习惯之一。

未清除浮动源代码

<style type=”text/css”>
<!–
    *{margin:0;padding:0;}
    body{font:36px bold; color:#F00; text-align:center;}
    #layout{background:#FF9;}
    #left{float:left;width:20%;height:200px;background:#DDD;line-height:200px;}
    #right{float:right;width:30%;height:80px;background:#DDD;line-height:80px;}
–>
</style>
<div id=”layout”>
    <div id=”left”>Left</div>
    <div id=”right”>Right</div>
</div>

一、使用空标签清除浮动

我用了很久的一种方法,空标签可以是div标签,也可以是P标签。我习惯用

,够简短,也有很多人用<hr />,只是需要另外为其清除边框,但理论上可以是任何标签。这种方式是在需要清除浮动的父级元素内部的所有浮动元素后添加这样一个标签清楚浮动,并为其定义CSS代码:clear:both。此方法的弊端在于增加了无意义的结构元素。


<style type=”text/css”>
<!–
 *{margin:0;padding:0;}
 body{font:36px bold; color:#F00; text-align:center;}
 #layout{background:#FF9;}
 #left{float:left;width:20%;height:200px;background:#DDD;line-height:200px;}
 #right{float:right;width:30%;height:80px;background:#DDD;line-height:80px;}
 .clr{clear:both;}
–>
</style>
<div id=”layout”>
 <div id=”left”>Left</div>
 <div id=”right”>Right</div>
 <p class=”clr”>
</div>

二、使用overflow属性

此方法有效地解决了通过空标签元素清除浮动而不得不增加无意代码的弊端。使用该方法是只需在需要清除浮动的元素中定义CSS属性:overflow:auto,即可!”zoom:1″用于兼容IE6。

<style type=”text/css”>
<!–
 *{margin:0;padding:0;}
 body{font:36px bold; color:#F00; text-align:center;}
 #layout{background:#FF9;overflow:auto;zoom:1;}
 #left{float:left;width:20%;height:200px;background:#DDD;line-height:200px;}
 #right{float:right;width:30%;height:80px;background:#DDD;line-height:80px;}
–>
</style>
<div id=”layout”>
 <div id=”left”>Left</div>
 <div id=”right”>Right</div>
</div>

三、使用after伪对象清楚浮动

该方法只适用于非IE浏览器。具体写法可参照以下示例。
使用中需注意以下几点。
一、该方法中必须为需要清除浮动元素的伪对象中设置height:0,否则该元素会比实际高出若干像素;
二、content属性是必须的,但其值可以为空,蓝色理想讨论该方法的时候content属性的值设为”.”,但我发现为空亦是可以的。

<style type=”text/css”> 
<!– 
 *{margin:0;padding:0;} 
 body{font:36px bold; color:#F00; text-align:center;} 
 #layout{background:#FF9;} 
 #layout:after{display:block;clear:both;content:”";visibility:hidden;height:0;} 
 #left{float:left;width:20%;height:200px;background:#DDD;line-height:200px;} 
 #right{float:right;width:30%;height:80px;background:#DDD;line-height:80px;} 
–> 
</style> 
<div id=”layout”> 
 <div id=”left”>Left</div> 
 <div id=”right”>Right</div> 
</div>
哟?不错哎 订阅飞鱼的RSS Feeds 回去慢慢看^_^

您可能还对这些日志感兴趣

该文章已经被摸了146次。 共有 4 条评论

  1. 1. seri 2010年6月12日 at 17:17

    对IE8貌似还是不奏效 – - 偶阴错阳差当上了前端开发啊,还望多多指导。

    回复

    飞鱼 Reply:

    哦 这篇文章好久前更新了,可以用下面的方法:
    .clearfix:after {content:”\0020″; display:block; height:0; clear:both; visibility:hidden;}
    .clearfix { zoom:1;}

    回复

  2. 2. zbk 2010年9月9日 at 17:15

    正在自学CSS+DIV,谢谢分享!

    回复

    飞鱼 Reply:

    嘎嘎, 好好学习天天向上

    回复

发表评论

评论仅支持“a、abbr、strong、em、blockquote、code”几个简单的标签

Who am I ?

飞鱼,男,浙江人士。
非专业前端、交互设计师。
目前在 企鹅村 通宵 打酱油

最新在啃

php和mysql web开发(原书第4版) javascript

新鲜的肉

最新评论

  • 小元: 啊!我会弄了!
  • 小元: 请问多窗口并显怎么设置?看了文章还是不会呢! “打开html页面,点击多窗口panel,然后从左侧目录中将css文件拖动到右侧panel就可以实现了。”...
  • vilppu: http://foxsp.com/t/125 这有下载,也有安装说明
  • James: 请问能否分享配色方案?
  • Aric: 代码快 来一份 谢谢楼主了 新年快乐

订阅-rss-永久链接

MT
备案号:浙ICP备09020026 号