欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

css hack之清除浮動(clearfix)

  發(fā)布時間:2010-10-28 23:28:49   作者:佚名   我要評論
平常做東西,經(jīng)常要碰到清除浮動(對于一些浮動元素) 一般最簡單的方式是在要清除浮動的元素后直接加一div
<div class='clear'></div>

但這樣增加了頁面的結構的源代碼,造成代碼的擁腫,其實也可以有更好的辦法,
在浮動元素的外包clearfix樣式

復制代碼
代碼如下:

<div class="clearfix">
  <div class="fl"></div>
<div class="fr"></div>
</div>
.clearfix:after{
visibility:hidden;
display:block;
font-size:0;
content:" ";
clear:both;
height:0;
}
.clearfix { display: inline-table; }
/* Hides from IE-mac \*/
* html .clearfix { height: 1%; }
.clearfix { display: block; }
/* End hide from IE-mac */

說明:
*對大多數(shù)符合標準的瀏覽器應用第一個聲明塊,目的是創(chuàng)建一個隱形的
內(nèi)容為空的塊來為目標元素清除浮動。
*第二條為clearfix應用 inline-table 顯示屬性,僅僅針對IE/Mac。
*利用 * / 對 IE/Mac 隱藏一些規(guī)則:
* height:1% 用來觸發(fā) IE6 下的haslayout。
*重新對 IE/Mac 外的IE應用 block 顯示屬性。
*最后一行用于結束針對 IE/Mac 的hack。
由于此方法針對的瀏覽器或成為歷史(尤其是Mac下的IE5 ),或正在靠近
標準的路上,這個方法就不再那么與時俱進了。
拋掉對 IE/Mac 的支持之后,新的清除浮動方法:

復制代碼
代碼如下:

.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}* html .clearfix { zoom: 1; } /* IE6 */
*:first-child+html .clearfix { zoom: 1; } /* IE7 */

說明:
IE6 和 IE7 都不支持 :after 這個偽類,因此需要后面兩條來觸發(fā)IE6/7的haslayout,以清除浮動。幸運的是IE8支持 :after 偽類。因此只需要針對IE6/7的hack了。
糖伴西紅柿說:
Jeff Starr 在這里針對IE6/7用了兩條語句來觸發(fā)haslayout。我在想作者為什么不直接用 * 來直接對 IE6/7 同時應用 zoom:1 或者直接就寫成:

復制代碼
代碼如下:

.clearfix:after {visibility: hidden;display: block;font-size: 0;content: " ";clear: both;height: 0;}
.clearfix{*zoom:1;}

以我目前的淺薄認知來講,以上寫法應該也可以直接達到同樣效果。關于這個地方,在文章的評論里也有些討論,我希望再聽聽大家的高見。
我平時都是用 overflow:hidden 來清除浮動的,因為夠簡單粗暴。但是 overflow 有時候也不太適用:
父級元素使用 overflow:hidden 時,如果其子元素定位到部分或全部在父元素之外,父元素就會對超出其外的子元素部分進行裁剪。
對 css3 來說,也會 overflow:hidden 也會對一些屬性產(chǎn)生影響。
例如 box-shadow, 當父元素使用 overflow:hidden 屬性時,box-shadow 會被裁剪。

對于那些不愿意再給標簽添加額外的 clearfix 類來清除浮動的人來說,直接將需要清除浮動的元素添加進清除浮動代碼塊這個組也是一個辦法。

復制代碼
代碼如下:

.group:after,
#content:after,
#sidebar:after,
#some .other .thing:after
{
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
zoom:1;
}

這種情況下,html 和 css 文件就像一個蹺蹺板的兩頭。html 代碼倒是整潔了,css 代碼卻出現(xiàn)了一定的繁冗。而且一旦專題頁面過長,或者在項目中使用,用這個清除組的方式反而會不勝其擾。
歸結下來,還是得看個人、項目的權衡選擇.雖然我一直用簡單粗暴的overflow:hidden,但是現(xiàn)在更傾向于使用 clearfix,感覺這種一體化的東西更靠譜,能避免偶爾對 zoom 的遺忘。

相關文章

最新評論