浮动门Bug探析
直接借用PPK的演示代码:
div.container { border: 1px solid #000000 }
div.left { width: 45%; float: left }
div.right { width: 45%; float: right }
浮动门Bug就这样粉墨登场了:
The left column.
The left column.
The left column.
The left column.
The right column.
The right column.
The right column.
做了一个demo页面,各种解法办法都在里面,自己看^o^
个人推荐使用办法二:
#container { overflow: hidden; _zoom: 1 }
采用hidden是因为:如果没设定高宽,hidden和auto的效果一样的;如果设定了高宽,hidden则是大部分情况下的预期结果。_zoom: 1是为了兼容讨厌的ie6.
2008-11-06更新:经圆心指点,overflow: hidden用来布局容易出问题,一是用 JavaScript Popup 出来的层很可能显示不全(致命伤);二是在某些情况下会造成双击空白处全选(没总结出规律,偶尔会出现)。此外,某些时候还会造成性能问题。
另外,用overflow清除浮动其实是一个hack, overflow本意不是用来干这个的,如果哪一天浏览器渲染引擎升级了,解决了这个“bug”,这个方法很可能就会失效。因此最好的清除浮动的办法还是PIE的方法:
.clearfix:after {
content: "020";
display: block;
height: 0;
clear: both;
}
.clearfix {
zoom: 1;
}
针对中文网站,上面有些改进:content:"020";是放一个空白字符(小虎指出“.”在中文编码的页面有时会出问题,采用空白字符借鉴自Adobe首页)。这样,visibility:hidden;也就没必要了。
百度的小志还指出,最好将font-size: 0; line-height: 0;也加上。我和小虎讨论的结果是,这两个其实是针对ie的hack, 但实际上ie不认识:after. ie下,用zoom: 1;就已经搞定了,不需要加入其它hack.
另外,IE/Mac是老古董了,不必再考虑。

October 29th, 2008 on 20:39
标题党呀,又把我骗过来了,就是清除浮动嘛……
October 30th, 2008 on 8:23
哈哈,严重标题党。我说订阅怎么又冒东西出来了
November 6th, 2008 on 13:05
存档备忘:
stefsun.jia
12:01 这个是小志说的,不是我!Haha
12:03 不过,那个font-size:0;的情况,我确实是又一次在FF3里碰到的,就一临时页面,还没来得及看代码,页面就删掉了!
12:28 可能跟样式表的编码有关,那次把格式保存错了!结果就出现了那个问题(不加font-size:0就有滚动条),然后,我是了很多次,再也重现不了了!…..
December 31st, 2008 on 13:44
果然是clearfix
February 4th, 2009 on 15:56
又找到个学习的好地方,订阅!
February 27th, 2009 on 0:10
content: “020″;
貌似应该是
content:”020″;
吧
February 27th, 2009 on 7:51
@eddie: wordpress对半角引号会自动转义
February 27th, 2009 on 23:39
呵呵不好意思啊~本来还想用中文表达斜杠的
谢谢你的代码
March 6th, 2009 on 18:13
.clearfix:after {
content: “020″;
display: block;
height: 0;
clear: both;
}
.clearfix {
zoom: 1;
}
我用他生成的020怎么样去掉啊
April 8th, 2009 on 21:50
zoom: 1 這個通不過W3C啊。
October 23rd, 2009 on 9:54
文中的content:”020″;应该是content:”020″;吧?
October 23rd, 2009 on 10:24
是content: “020″;
October 23rd, 2009 on 10:24
晕被替换了
leave a reply