清除浮动的一些方法

浮动的元素不在文档流占据空间,如下图所示,里面的方框分别左右浮动,容器并没有被撑开。IE6除外,但也有需要清除的时候。

clearfloat_1
我说IE6除外只是因为此框框在IE6表现正常,并没受浮动影响,至于真相是什么,还有待考究。

HTML结构

<div id='container'>
	<div id='left'>填充文字</div>
	<div id='right'>填充文字</div>
</div>

解决方法
1.添加额外标签
在容器末尾添加<div style=”clear:both”></div>从而将容器撑开,但这样会添加额外的标签。
Demo

2.浮动容器
将容器#container添加float:left,虽然这样能产生想要的效果,但是下一个元素会受到这个浮动元素的影响。
Demo

3.使用overflow属性
应用值为hidden或auto的overflow属性有一个有用的副作用,会自动地清理包含的任何浮动元素。
Demo

4.使用:after伪类(IE6无效)
使用:after在容器末尾添加新的内容并清除内容浮动。

#container{
	display: inline-block; /*ie for mac*/
}
#container:after{
	content:".";  /*额外的东西越小越好,此处添加一个点*/
	display:block; /*这是必须的*/
	clear:both; /*这是必须的*/
	visibility:hidden; /*隐藏所添加的内容*/
	height:0; /*不占用空间*/
}

Demo

5.其他
IE6在有些情况下使用以上方法并没有清除浮动,而IE很多奇怪的渲染问题可以通过赋予其“layout”得到解决,或者说触发IE的layout属性,例如添加CSS zoom:1,_height:1%,至于什么是“layout”,我也不太懂,可以搜索一下。

欢迎探讨~

提示: 本文采用 BY-NC-SA 协议进行授权,转载请保留链接。

上一篇:

下一篇:

[ Ctrl + Enter ]

  1. 淘宝导购

    我什么也不说啊,你们不要逼我啊!!!

  2. Jop

    overflow:hidden hight:auto zoom:1 不重要的一般这么清了。博客效果都挺不错,就是透明度感觉很压抑啊

  3. mice

    再看看留言的效果什么样耳朵//

  4. mice

    我喜欢第一种..

  5. 西门

    我一般会用第三种,不过还会加上zoom:1;不知道是好习惯还是坏习惯。

  6. 阅网博客

    总结的不错:)

  7. 7cbt

    :oops: 留言的体验很棒!

  8. 小羿

    留言的动态效果真不错

  9. deardongdong

    对于技术的文章我从来都是不懂的……

  10. Mucid

    只要你是用滴IE6神马神奇的事情都会出现的。。

  11. Kana

    恩…其實你的4的code加上5的觀念就是clearfix

    4少了一句….

    #container {display: inline-block;}

    上面那個是寫給ie for mac

    然後在html的份用if ie獨立控制
    #container {
    zoom: 1;
    display: block;
    }

    關於haslayout其實就是指讓一個元素在瀏覽器裡變得有具體的存在值
    ex:一個容器把它加上長寬就是一種最常見的haslayout

    所以上面的zoom:1;就是在win for ie 裡開啟你的元素的具體存在值。
    然後再用display: block;清掉它的浮動。

    這樣智障ie6才看得懂

    但zoom這個屬性如果我沒記錯應該是不符合w3c的樣子….所以等於又要寫成js
    不過既然都要載js我會比較建議載 http://code.google.com/p/ie7-js/

    它是為了配合超天才微軟公司每up一次瀏覽器版本就把遊戲規則重新砍掉重練的壞習慣而寫的

    先讓IE的部分統一一點…不然光寫hack就h到天荒地老了

    • Kana

      对不起….我忘了转成简体了….

      • Ygs

        @Kana 原來是更複雜的,謝謝,學習了~繁體我看得懂的所以不用對不起

        • Kana

          @Ygs 恩…多碰几次就不复杂了~
          对了我後来想到…如果不想用zoom属性其实加上height:1%;理论上也是可以的….不过没有测试过就是了…

  12. 小松

    清除浮动有时候真的很需要,否则就会变形~

  13. joyla

    学习了,呵呵!

  14. SoleilNeon

    貌似一般第一个和第三个方法用的比较多。IE6太让人火大了。

  15. N

    博主也是做前端的吧,看到了那个评论框动画,挺好 :?:

  16. zwwooooo

    浮动有时很麻烦

  17. laowi

    路过打酱油~

  18. 点点

    CSS只了解,我就不懂装懂吧,呵呵。

  19. Code之行人

    呵呵来看看你了 不用IE好多年了啊

  20. 飞猪

    沙发独一无二哦。。

  21. 恋上秋风

    。。。这应该算技术活,技术活我一概无视

  22. forever

    。。。真的连学习都不会了。

    博主很高产。最近太忙。都没更新我博客

  23. 问天

    :?: 学习了~

  24. 奈维摩尔

    我已经对IE6深恶痛绝了,评论嵌套经过万般尝试把IE6杯具了。
    话说今天用IE6开了下想看看那V5的杯具页,咋没了呢。。

  25. 睿智小超人

    一头雾水