国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
不能被撐開div之float,clear特性

在寫HTML代碼的時候,發(fā)現(xiàn)在Firefox等符合W3C標(biāo)準(zhǔn)的瀏覽器中,如果有一個DIV作為外部容器,內(nèi)部的DIV如果設(shè)置了float樣式,則外部的容器DIV因?yàn)閮?nèi)部沒有clear,導(dǎo)致不能被撐開??聪旅娴睦樱?br>
HTML4STRICT代碼:

<div style="width:200px;border:1px 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>



顯示的結(jié)果如下:


容器DIV沒有被撐開

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

以前我都是用這樣的方法來解決:
HTML4STRICT代碼:

<div style="width:200px;border:1px 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>



顯示的結(jié)果如下:


顯示正常了

我們看到,在容器DIV內(nèi)要顯示出來的float:left的所有的DIV之后,我們添加了這樣的一個DIV:<div style="clear:both"></div> 。這樣,其實(shí)就在最后增加了clear的動作。

但是,我總覺得,這么多加一個DIV有點(diǎn)不妥。一是多了一個沒有意義的DIV,二是在用dojo做Drag & Drop的時候,由于這個DIV是容器DIV的一個字節(jié)點(diǎn),如果這個節(jié)點(diǎn)被移動,則會造成排版上的Bug:如果要顯示的藍(lán)框的DIV被移到這個DIV之后,則因?yàn)閏lear:both,它會被強(qiáng)制換一行顯示。所以,我一直在尋找更好的解決辦法。

昨天在無數(shù)次的詢問了Google大仙后,我終于找到了How To Clear Floats Without Structural Markup 這篇文章,找到了解決的辦法。

首先設(shè)置這樣的CSS:
CSS代碼:

.clearfix:after {

content: ".";

display: block;

height: 0;

clear: both;

visibility: hidden;

}



然后,我們再修改原來的HTML代碼,讓外部的容器DIV來使用這個CSS:
HTML4STRICT代碼:

<div style="width:200px;border:1px 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里測試一下,哈哈,這樣做的確很有效,顯示正常,而且dojo的 Drag & Drop 也不會有問題了。原來,這個clearfix的CSS使用了after這個偽對象,它將在應(yīng)用clearfix的元素的結(jié)尾添加content中的內(nèi)容。在這里添加了一個句號".",并且把它的display設(shè)置成block;高度設(shè)為0;clear設(shè)為both;visibility設(shè)為隱藏。這樣就達(dá)到了撐開容器的目的啦。

但是,在文章中說,Windows IE并不支持這樣做。所以要讓IE也完美顯示,則必須在clearfix這個CSS定義的后面加上一些專門為IE設(shè)定的HACK。CSS如下:
CSS代碼:

.clearfix:after {

content: ".";

display: block;

height: 0;

clear: both;

visibility: hidden;

}

 

* html .clearfix {height: 1%;}



因?yàn)檗D(zhuǎn)義字符"\",Mac IE瀏覽器會忽略掉這段Hack,但Windows IE不會,它會應(yīng)用 * html .clearfix {height: 1%;} 來達(dá)到撐開DIV容器的目的(貌似Mac IE沒有辦法解決這個問題,不過幸好用戶數(shù)量是在是太少了,Safari支持就可以了:p)。

測試一下,果然大功告成。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
高手總結(jié)CSS書寫技巧
float?left?或者float?right?詳解-HTML-XHTML-CSS-PQ...
不會前端也可以看得懂的3種DIV CSS布局技術(shù)
ecshop模板css兼容性問題_height:auto火狐下無效
DIV左右布局
仿淘寶TAB切換搜索框
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服