網站首頁 網站建設 公司動態 行業新聞 案例展示 關于我們

文章內容

再來一個清除浮動(clearfix)

日期:2013-12-14  來源:攀枝花惠康網絡公司

在寫HTML代碼的時辰,發此刻Firefox等合適W3C尺度的瀏覽器中,如不美觀有一個DIV作為外部容器,內部的DIV如不美觀設置了float樣式,則外部的容器DIV因為內部沒有clear,導致不能被撐開??聪旅娴睦樱?/p>

HTML4STRICT代碼:

  1. <div style=“width:200px;border:1px solid red;”>
  2. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  3. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  4. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  5. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  6. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  7. </div>

顯示的結不美觀如下:

P_1160709253_0.gif
容器DIV沒有被撐開

巨匠可以看到,作為外部容器的邊框為紅色的DIV,沒有被撐開。這是因為內部的DIV因為float:left之后,就丟失蹤了clear:both和display:block的樣式,所以外部的DIV不會被撐開。
HTML4STRICT代碼:

  1. <div style=“width:200px;border:1px solid red;” class=“clearfix”>
  2. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  3. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  4. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  5. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  6. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  7. </div>

我們想讓外部容器的DIV跟著內部DIV增多而增添高度,要怎么解決呢?

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

  1. <div style=“width:200px;border:1px solid red;”>
  2. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  3. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  4. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  5. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  6. <div style=“float:left;width:80px;height:80px;border:1px solid blue;”>TEST DIV</div>
  7. <div style<div style=”clear:both”></div> 。這樣,其實就在最后增添了clear的動作。

    可是,我總感受,這么多加一個DIV有點不妥。一是多了一個沒有意義的DIV,二是在用dojo做Drag & Drop的時辰,因為這個DIV是容器DIV的一個字節點,如不美觀這個節點被移動,則會造成排版上的Bug:如不美觀要顯示的藍框的DIV被移到這個DIV之后,則因為clear:both,它會被強制換一行顯示。所以,我一向在尋找更好的解決法子。

    首先設置這樣的CSS:
    CSS代碼:

    1. .clearfix:after {
    2. content: “.”;
    3. display: block;
    4. height: 0;
    5. clear: both;
    6. visibility: hidden;
    7. }

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

    昨天在無數次的詢問了Google年夜仙后,我終于找到了How To Clear Floats Without Structural Markup 這篇文章,找到體味決的法子。

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

    1. .clearfix:after {
    2. content: “.”;
    3. display: block;
    4. height: 0;
    5. clear: both;
    6. visibility: hidden;
    7. }
    8. /* Hides from IE-mac \*/
    9. * html .clearfix {height: 1%;}
    10. /* End hide from IE-mac */

    在Firefox里測試一下,哈哈,這樣做簡直很有用,顯示正常,而且dojo的 Drag & Drop 也不會有問題了。原本,這個clearfix的CSS使用了after這個偽對象,它將在應用clearfix的元素的結尾添加content中的內容。在這里添加了一個句號”.”,而且把它的display設置成block;高度設為0;clear設為both;visibility設為潛匿。這樣就達到了撐開容器的目的啦。

    因為轉義字符”\”,Mac IE瀏覽器會忽略失蹤這段Hack,但Windows IE不會,它會應用 * html .clearfix {height: 1%;} 來達到撐開DIV容器的目的(貌似Mac IE沒有法子解決這個問題,不外幸好用戶數目是在是太少了,Safari撐持就可以了:p)。

    測試一下,不美觀真年夜功樂成。

    P_1160709321_0.gif

    文章來源:攀枝花惠康網絡公司

    惠康網絡,是一家專業從事攀枝花網站建設,攀枝花網站制作,攀枝花網站設計公司,提供網站建設一條龍服務(網站域名注冊+網站服務器租用+網站開發+網站維護+網站營銷推廣),惠康網絡立足攀枝花,輻射全中國,攀枝花惠康網絡的客戶已經遍布國內各地大中小城市,我們高效優質的網站建設服務深受用戶好評。

客服熱線:tel(謝先生)  客服QQ:1323605005  
服務郵箱:[email protected](售前咨詢)  [email protected](技術部)  [email protected](售后服務)
公司地址:四川省攀枝花市
郵編:617200

青海十一选五开奖图