css 清除浮動

2021-06-01 08:38:59 字數 1897 閱讀 9888

1、本來自以為對浮動的了解已經蠻不錯的了,但是在網上看到其他人的想法,發現還是有差距的。。。。

起源:

.clearfix

:after

.clearfix

/* hides from ie-mac \*/

* html .clearfix

.clearfix

/* end hide from ie-mac */

說明:

由於此方法針對的瀏覽器或成為歷史(尤其是mac下的ie5 ),或正在靠近

標準的路上,這個方法就不再那麼與時俱進了。

拋掉對 ie/mac 的支援之後,新的清除浮動方法:

/* new clearfix */

.clearfix

:after

* html .clearfix            

/* ie6 */

*:first-child

+html .clearfix

/* ie7 */

說明:

ie6 和 ie7 都不支援 :after 這個偽類,因此需要後面兩條來觸發ie6/7的haslayout,以清除浮動。幸運的是ie8支援 :after 偽類。因此只需要針對ie6/7的hack了。

糖伴西紅柿說:

jeff starr 在這裡針對ie6/7用了兩條語句來觸發haslayout。我在想作者為什麼不直接用 * 來直接對 ie6/7 同時應用 zoom:1 或者直接就寫成:

.clearfix

:after

.clearfix

我平時都是用 overflow:hidden 來清除浮動的,因為夠簡單粗暴。但是 overflow 有時候也不太適用:

父級元素使用 overflow:hidden 時,如果其子元素定位到部分或全部在父元素之外,父元素就會對超出其外的子元素部分進行裁剪。

對 css3 來說,也會 overflow:hidden 也會對一些屬性產生影響。

例如 box-shadow, 當父元素使用 overflow:hidden 屬性時,box-shadow 會被裁剪。

其他可能被影響的元素如 text-shadow 和 transform。可以參考 andy ford 的 demo

對於那些不願意再給標籤新增額外的 clearfix 類來清除浮動的人來說,直接將需要清除浮動的元素新增進清除浮動**塊這個組也是乙個辦法。

.group

:after

,#content

:after

,#sidebar

:after

,#some

.other

.thing

:after

這種情況下,html 和 css 檔案就像乙個蹺蹺板的兩頭。html **倒是整潔了,css **卻出現了一定的繁冗。而且一旦專題頁面過長,或者在專案中使用,用這個清除組的方式反而會不勝其擾。

歸結下來,還是得看個人、專案的權衡選擇.雖然我一直用簡單粗暴的overflow:hidden,但是現在更傾向於使用 clearfix,感覺這種一體化的東西更靠譜,能避免偶爾對 zoom 的遺忘。

成熟的東西穩定性好,但是會比較複雜、厚重;簡單的靈活性好,但是過於零散、隨意,沒有組織性,還沒那麼穩定.權衡決定到底要使用那種方法,有時候反而比問題本身還讓人頭疼.

我個人的想法是沒有好與壞的區別,只有合適不合適的區別。但是我們一直都受困於所受的教育,什麼問題都有標準答案,非對即錯,非好即壞。經常可見對一些工具的討論,都是奔著爭出個誰好誰壞而去的,例如 jquery mootools yui.相比起到底是好誰壞,我們還是最好趕緊轉變思想,摒棄」一刀切」的思想吧。

本文**:前端觀察

CSS清除浮動 清除float浮動

css清除浮動方法集合 一般浮動是什麼情況呢?一般是乙個盒子裡使用了css float浮動屬性,導致父級物件盒子不能被撐開,這樣css float浮動就產生了。浮動產生樣式效果截圖 本來兩個黑色物件盒子是在紅色盒子內,因為對兩個黑色盒子使用了float浮動,所以兩個黑色盒子產生了浮動,導致紅色盒子不...

CSS清除浮動 清除float浮動

css清除浮動方法集合 一般浮動是什麼情況呢?一般是乙個盒子裡使用了css float浮動屬性,導致父級物件盒子不能被撐開,這樣css float浮動就產生了。浮動產生樣式效果截圖 本來兩個黑色物件盒子是在紅色盒子內,因為對兩個黑色盒子使用了float浮動,所以兩個黑色盒子產生了浮動,導致紅色盒子不...

CSS清除浮動 清除float浮動

一般浮動是什麼情況呢?一般是乙個盒子裡使用了css float浮動屬性,導致父級物件盒子不能被撐開,這樣css float浮動就產生了。浮動產生樣式效果截圖 本來兩個黑色物件盒子是在紅色盒子內,因為對兩個黑色盒子使用了float浮動,所以兩個黑色盒子產生了浮動,導致紅色盒子不能撐開,這樣浮動就產生了...