clear:both;和overflow:hidden;的應用理解。


摘自cbwcwy 前輩;

 

 

 

clear是子模塊之間限定的,如下:
<div id="a">
 

   <div id="1"></div>
    <div id="2"></div>
</div>
1和2之間,用clear來限定。
而overflow:hidden是父模塊對子模塊來用的。就是a對於1和2模塊的限定。
clear非常好理解,主要是overflow:hidden不這么好理解,我發一篇文章給你看看,這個你看完就非常明白是什么意思了。(這是我看到的一篇文章,講的最透徹的)

overflow:hidden這個CSS樣式是大家常用到的CSS樣式,但是大多數人對這個樣式的理解僅僅局限於隱藏溢出,而對於清除浮動這個含義不是很了解。

一提到清除浮動,我們就會想到另外一個CSS樣式:clear:both,我相信對於這個屬性的理解大家都不成問題的。但是對於“浮動”這個詞到底包含什么樣的含義呢?我們下面來詳細的闡述一下。

<div id="wai">
<div id="nei"></div>
</div>

這是一個常用的div寫法,下面我們來書寫樣式。大家可以在DMX中自己做試驗

#wai{ width:500px;  background:#000; height:500px;}

#nei { float:left; width:600px; height:600px; background:red;}

可以看到,我給nei這個id加了一個浮動,我們常規的理解是,我們允許nei這個id的div的右邊出現其他的內容,只要它的寬度不超過wai這個div和nei這個div的剩余值。

如果div wai中還包含其他的div,我不允許它出現在nei的右側,我們則用樣式clear:both指定這個div,不允許它浮動在nei右側。

這些在ie6里面是正確的。但是在火狐或者其他瀏覽器里面,我們發現問題並非如此簡單。我們發現,當nei這個div的寬度和高度都大於wai這個div的時候,wai並沒有被內撐開而是依舊顯示為我們指定的寬高。在我的例子中,都是500。

這個時候我不理解了,我搜索了很多的資料,但是都沒能理解這是為什么,直到看到別人在類似的情況下給wai這個div加了一個overflow:hidden這個屬性解決了這個問題。

我們直到overflow:hidden這個屬性的作用是隱藏溢出,給wai加上這個屬性后,我們的nei的寬高自動的被隱藏掉了。另外,我們再做一個試驗,將wai這個div的高度值刪除后,我們發現,wai的高度自動的被nei這個div的高度值給撐開了。

說到這里,我們再來理解一下“浮動”這個詞的含義。我們原先的理解是,在一個平面上的浮動,但是通過這個試驗,我們發現,這不僅僅是一個平面上的浮動,而是一個立體的浮動!

也就是說,當nei這個div加上浮動這個屬性的時候,在顯示器的側面,它已經脫離了wai這個div,也就是說,此時的nei的寬高是多少,對於已經脫 離了的wai來說,都是不起作用的。打個形象的比喻就是當JJ脫離BB的時候,JJ的大小對於BB是沒有撐開的作用的(有點少兒不宜的感覺-_-|||)

OK,當我們全面的理解了浮動這個詞的含義的時候,我們就理解overflow:hidden這個屬性中的解釋,清除浮動是什么意思了。也就是說,當我們 給wai這個div加上overflow:hidden這個屬性的時候,其中的nei等等帶浮動屬性的div的在這個立體的浮動已經被清除了,就好比JJ 又進入了BB內,JJ的大小自然又會影響到BB的大小。

這就是overflow:hidden這個屬性清除浮動的准確含義。

當我們沒有給wai這個div設置高度的時候,nei這個div的高度,就會撐開wai這個div,而在另一個方面,我們要注意到的是,當我們給wai這 個div加上一個高度值,那么無論nei這個div的高度是多少,wai這個高度都是我們設定的值。而當nei的高度超過wai的高度的時候,超出的部分 就會被隱藏。這就是隱藏溢出的含義!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM