溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么用clearfix:after消除css浮動解決外部div不能撐開問題

發(fā)布時間:2021-07-28 18:06:29 來源:億速云 閱讀:144 作者:chen 欄目:web開發(fā)

這篇文章主要介紹“怎么用clearfix:after消除css浮動解決外部div不能撐開問題”,在日常操作中,相信很多人在怎么用clearfix:after消除css浮動解決外部div不能撐開問題問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用clearfix:after消除css浮動解決外部div不能撐開問題”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

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

代碼如下:


<div >
<div >TEST DIV</div>
<div >CSSBBS</div>
<div >TEST DIV</div>
<div >TEST DIV</div>
<div >TEST DIV</div>
</div>


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

以前我都是用這樣的法子 來解決:

代碼如下:


<div >
<div >TEST DIV</div>
<div >TEST DIV</div>
<div >TEST DIV</div>
<div >TEST DIV</div>
<div >TEST DIV</div>
<div ></div>
</div>


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

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

解決的措施:
首先設(shè)置這樣的CSS:
CSS代碼:

代碼如下:


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


然后,我們再修正原本的HTML代碼,讓外部的容器DIV來應(yīng)用這個CSS:
HTML4STRICT代碼:

代碼如下:


<style>
.clearfix:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
* html .clearfix {height: 1%;}


在Firefox里測試一下,哈哈,這樣做的確很有效,顯示正常,而且dojo的 Drag & Drop 也不會有問題了。原本,這個clearfix的CSS應(yīng)用了after這個偽對象,它將在利用 clearfix的元素的結(jié)尾添加content中的內(nèi)容。在這里添加了一個句號".",并且把它的display設(shè)置成block;高度設(shè)為 0;clear設(shè)為both;visibility設(shè)為潛藏 。這樣就達(dá)到 了撐開容器的目標(biāo)啦。

但是,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%;}


因為轉(zhuǎn)義字符"\",Mac IE涉獵器會漠視 掉這段Hack,但Windows IE不會,它會利用 * html .clearfix {height: 1%;} 來達(dá)到 撐開DIV容器的目標(biāo)(貌似Mac IE沒有措施解決這個問題,不過幸好用戶數(shù)量是在是太少了,Safari支撐就可以了:p)。

到此,關(guān)于“怎么用clearfix:after消除css浮動解決外部div不能撐開問題”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

css
AI