有幾十種方法可以清除浮動效果,以確保包含所有後代(包括浮動子女)的包含塊。清除浮動效果的方法
- 使用標記:
<div style="clear:both;"></div>
- 創建一個新的塊格式上下文:
- 浮動
- 絕對定位
- 具有更不尋常的特性中的一個的顯示屬性值(表單元等)
- 溢出
我的問題是:有沒有其他方法?
非常感謝您的幫助!
有幾十種方法可以清除浮動效果,以確保包含所有後代(包括浮動子女)的包含塊。清除浮動效果的方法
<div style="clear:both;"></div>
我的問題是:有沒有其他方法?
非常感謝您的幫助!
一些方法你未涉及您的問題:
display: inline-block
- 我真的不會計算爲"an unusual display value"
,雖然它不是通常用於清除,因爲花車它的副作用(如收縮包裝):http://jsfiddle.net/CLXbc/clearfix
類 - 這是一種常見的技術 - http://jsfiddle.net/CLXbc/1/
/* The Magnificent Clearfix: Updated to prevent margin-collapsing on child elements.
j.mp/bestclearfix */
.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; }
.clearfix:after { clear: both; }
/* Fix clearfix: blueprintcss.lighthouseapp.com/projects/15318/tickets/5-extra-margin-padding-bottom-of-page */
.clearfix { zoom: 1; }
到目前爲止,兩種最常用的方法是overflow: hidden
和clearfix
。
經歷的其他選項,這裏就是爲什麼他們是不是最佳:
"using markup:<div style="clear:both;"></div>"
- 這不是語義。在整個HTML中濺出清除div
是一個糟糕的選擇。"is floated"
- 這可行,但你通常不想收縮包裝。"is absolutely positioned"
- 你通常不希望你的元素被絕對定位。"has a display property value of one of more unusual properties(table-cell,etc.)"
- display: table-cell
在IE7中無法正常工作。但又一次,您不希望產生副作用。我在大多數情況下使用overflow: hidden
。有時候我不能用那個,for example here。在這些情況下,我通常回退到clearfix
。
非常感謝你,clearfix類是我真正想知道的。 – 2011-06-13 09:49:29
您可以將浮動元素的父元素設置爲overflow:hidden;
或overflow:auto;
。
http://www.quirksmode.org/blog/archives/2005/03/clearing_floats.html
謝謝,但我已列出此方法。還有其他人嗎? – 2011-06-13 08:34:16
下面是關於浮動的偉大的閱讀。可能甚至會給長時間的Web開發人員提供更多的見解。
相關http://stackoverflow.com/questions/490184/what-is-the-best-way-to-clear-the-css-style-float – BoltClock 2011-06-13 08:29:33
謝謝,但我已經給出了這些方法什麼鏈接說過。我想知道的是另一種方法。 – 2011-06-13 08:32:53