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

CSS清除浮動(dòng) clearfix:after 使用技巧及兼容Firefox等符合W3C標(biāo)準(zhǔn)的瀏覽器

  發(fā)布時(shí)間:2011-10-10 14:35:38   作者:佚名   我要評(píng)論
在寫HTML代碼的時(shí)候,發(fā)現(xiàn)在Firefox等符合W3C標(biāo)準(zhǔn)的瀏覽器中,如果有一個(gè)DIV作為外部容器,內(nèi)部的DIV如果設(shè)置了float樣式,則外部的容器DIV因?yàn)閮?nèi)部沒(méi)有clear,導(dǎo)致不能被撐開(kāi)。
在寫HTML代碼的時(shí)候,發(fā)現(xiàn)在Firefox等符合W3C標(biāo)準(zhǔn)的瀏覽器中,如果有一個(gè)DIV作為外部容器,內(nèi)部的DIV如果設(shè)置了float樣式,則外部的容器DIV因?yàn)閮?nèi)部沒(méi)有clear,導(dǎo)致不能被撐開(kāi)??聪旅娴睦樱?

HTML4STRICT代碼:
代碼:

復(fù)制代碼
代碼如下:

<div style="border:2px solid red;">
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">CSSBBS</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
</div>

大家可以看到,作為外部容器的邊框?yàn)榧t色的DIV,沒(méi)有被撐開(kāi)。這是因?yàn)閮?nèi)部的DIV因?yàn)閒loat:left之后,就丟失了clear:both和display:block的樣式,所以外部的DIV不會(huì)被撐開(kāi)。
我們想讓外部容器的DIV隨著內(nèi)部DIV增多而增加高度,要怎么解決呢?
以前我都是用這樣的方法來(lái)解決:
HTML4STRICT代碼:
代碼:

復(fù)制代碼
代碼如下:

<div style="border:2px solid red;">
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="clear:both;"></div>
</div>

我們看到,在容器DIV內(nèi)要顯示出來(lái)的float:left的所有的DIV之后,我們添加了這樣的一個(gè)DIV:<div style="clear:both"></div> 。這樣,其實(shí)就在最后增加了clear的動(dòng)作。
但是,我總覺(jué)得,這么多加一個(gè)DIV有點(diǎn)不妥。一是多了一個(gè)沒(méi)有意義的DIV,二是在用dojo做Drag & Drop的時(shí)候,由于這個(gè)DIV是容器DIV的一個(gè)字節(jié)點(diǎn),如果這個(gè)節(jié)點(diǎn)被移動(dòng),則會(huì)造成排版上的Bug:如果要顯示的藍(lán)框的DIV被移到這個(gè)DIV之后,則因?yàn)閏lear:both,它會(huì)被強(qiáng)制換一行顯示。所以,我一直在尋找更好的解決辦法。
昨天在無(wú)數(shù)次的詢問(wèn)了Google大仙后,我終于找到了How To Clear Floats Without Structural Markup 這篇文章,找到了解決的辦法。
首先設(shè)置這樣的CSS:
CSS代碼:
代碼:

復(fù)制代碼
代碼如下:

.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}

然后,我們?cè)傩薷脑瓉?lái)的HTML代碼,讓外部的容器DIV來(lái)使用這個(gè)CSS:
HTML4STRICT代碼:

復(fù)制代碼
代碼如下:

<style>
.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
/* Hides from IE-mac \*/
* html .clearfix {height: 1%;}
/* End hide from IE-mac */
</style>
<div style="border:2px solid red;" class="clearfix">
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
<div style="float:left;width:80px;height:80px;border:1px solid blue;">TEST DIV</div>
</div>

在Firefox里測(cè)試一下,哈哈,這樣做的確很有效,顯示正常,而且dojo的 Drag & Drop 也不會(huì)有問(wèn)題了。原來(lái),這個(gè)clearfix的CSS使用了after這個(gè)偽對(duì)象,它將在應(yīng)用clearfix的元素的結(jié)尾添加content中的內(nèi)容。在這里添加了一個(gè)句號(hào)".",并且把它的display設(shè)置成block;高度設(shè)為0;clear設(shè)為both;visibility設(shè)為隱藏。這樣就達(dá)到了撐開(kāi)容器的目的啦。
但是,在文章中說(shuō),Windows IE并不支持這樣做。所以要讓IE也完美顯示,則必須在clearfix這個(gè)CSS定義的后面加上一些專門為IE設(shè)定的HACK。CSS如下:
CSS代碼:
代碼:

復(fù)制代碼
代碼如下:

.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
/* Hides from IE-mac \*/
* html .clearfix {height: 1%;}
/* End hide from IE-mac */

因?yàn)檗D(zhuǎn)義字符"\",Mac IE瀏覽器會(huì)忽略掉這段Hack,但Windows IE不會(huì),它會(huì)應(yīng)用 * html .clearfix {height: 1%;} 來(lái)達(dá)到撐開(kāi)DIV容器的目的(貌似Mac IE沒(méi)有辦法解決這個(gè)問(wèn)題,不過(guò)幸好用戶數(shù)量是在是太少了,Safari支持就可以了:p)。
測(cè)試一下,果然大功告成。
總結(jié):
在css里面添加如下代碼:

復(fù)制代碼
代碼如下:

/******clear float*******/
.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix {display: inline-table;}
/* Hides from IE-mac \*/
* html .clearfix {height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */

相關(guān)文章

  • CSS中使用clearfix清除浮動(dòng)的方法

    這篇文章主要介紹了CSS中使用clearfix清除浮動(dòng)的方法,作者列出了幾個(gè)clearfix的不同的使用方法進(jìn)行對(duì)比,需要的朋友可以參考下
    2015-07-09
  • 用clearfix:after消除css浮動(dòng)解決外部div不能撐開(kāi)問(wèn)題

    如果有一個(gè)DIV作為外部容器,內(nèi)部的DIV如果設(shè)置了float樣式,則外部的容器DIV因?yàn)閮?nèi)部沒(méi)有clear,導(dǎo)致不能被撐開(kāi)。使用clearfix:after,可以解決這個(gè)問(wèn)題
    2014-06-16
  • css中clearfix清除浮動(dòng)的用法及其原理示例介紹

    大家對(duì)css中clearfix并不陌生吧,它的作用就是清除浮動(dòng),下面對(duì)clearfix的定義及實(shí)現(xiàn)原理簡(jiǎn)要的為大家做個(gè)介紹,另外還有個(gè)不錯(cuò)的示例,喜歡的朋友不要錯(cuò)過(guò)
    2013-11-05
  • css清除浮動(dòng)clearfix:after的用法詳解(附完整代碼)

    如果外部有一個(gè)div容器,其內(nèi)部div容器設(shè)置了float樣式,則外部的容器div因?yàn)閮?nèi)部沒(méi)有clear,導(dǎo)致不能撐開(kāi)
    2023-05-12
  • css hack之清除浮動(dòng)(clearfix)

    平常做東西,經(jīng)常要碰到清除浮動(dòng)(對(duì)于一些浮動(dòng)元素) 一般最簡(jiǎn)單的方式是在要清除浮動(dòng)的元素后直接加一div
    2010-10-28
  • 淺談css清除浮動(dòng)(clearfix和clear)的用法

    下面小編就為大家?guī)?lái)一篇淺談css清除浮動(dòng)(clearfix 和clear)的用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧
    2023-05-12

最新評(píng)論