當柳上原的風吹向天際的時候...

          真正的快樂來源于創造

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            368 Posts :: 1 Stories :: 201 Comments :: 0 Trackbacks
          http://developer.51cto.com/art/201008/222367.htm

          本文和大家重點討論一下DIV高度自適應及注意問題,主要包括父div高度隨子div的高度改變而改變和子div高度隨父親div高度改變而改變兩種情況。

          DIV高度自適應及注意問題

          積累了一些經驗,總結出一些關于div高度自適應的技巧,希望有助于大家,轉載請標明出處,謝謝。

          一、DIV高度自適應(父div高度隨子div的高度改變而改變)

          1、如果父div不定義height、子div均為標準流的時候,父div的height隨內容的變化而變化,實現父div高度隨子div的高度改變而改變。

          代碼: 

          1. <styletypestyletype="text/css"> 
          2. #aa{border:#000000solid5px}  
          3. #bb{border:#00ffffsolid5px;}  
          4. #cc{border:#0033CCsolid5px}  
          5. style> 
          6. <dividdivid="aa">父div  
          7. <dividdivid="bb">子divdiv> 
          8. <dividdivid="cc">子divdiv> 
          9. div> 

          效果:IE、FF下一致

          2、如果父div定義height,子div均為標準流的時候,在IE下父div的height隨內容變化而變化,ff中則固定大小,如父div設置height:50px

          代碼: 

          1. <styletypestyletype="text/css"> 
          2. #aa{border:#000000solid5px;height:50px}  
          3. #bb{border:#00ffffsolid5px;}  
          4. #cc{border:#0033CCsolid5px}  
          5. style> 
          6. <dividdivid="aa">父div  
          7. <dividdivid="bb">子divdiv> 
          8. <dividdivid="cc">子divdiv> 
          9. div> 

          IE效果

          FF下效果

          3、如果子div使用了float屬性,此時已經脫離標準流,父div不會隨內容的高度變化而變化,解決的辦法是在浮動的div下面,加一個空div,設置clear屬性both

          未加空div代碼: 

          1. <styletypestyletype="text/css"> 
          2. #aa{border:#000000solid5px;}  
          3. #bb{border:#00ffffsolid5px;float:left}  
          4. #cc{border:#0033CCsolid5px;float:left}  
          5. style> 
          6. <dividdivid="aa">父div  
          7. <dividdivid="bb">子divdiv> 
          8. <dividdivid="cc">子divdiv> 
          9. div> 

          IE效果:

          FF效果:

          修改后代碼: 

          1. <styletypestyletype="text/css"> 
          2. #aa{border:#000000solid5px;}  
          3. #bb{border:#00ffffsolid5px;float:left}  
          4. #cc{border:#0033CCsolid5px;float:left}  
          5. style> 
          6. <dividdivid="aa">父div  
          7. <dividdivid="bb">子divdiv> 
          8. <dividdivid="cc">子divdiv> 
          9. <divstyledivstyle="clear:both">div> 
          10. div> 

          修改后效果:IEFF一致

          4.另類的DIV高度自適應
          原理:
          padding-bottom將列拉長變的一樣高,而負的margin-bottom又使其回到底部開始的位置,同時,溢出部分隱藏掉了。此方法必須加文檔信息才能正常顯示
          代碼: 


          1.  
          2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
          3. <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"> 
          4. <styletypestyletype="text/css"> 
          5. #aa{border:#000000solid5px;overflow:hidden;}  
          6. #bb{border:#00ffffsolid5px;float:left;  
          7. padding-bottom:100000px;margin-bottom:-100000px;}  
          8. #cc{border:#0033CCsolid5px;float:left;  
          9. padding-bottom:100000px;margin-bottom:-100000px;}  
          10. #dd{float:left}  
          11. style> 
          12. <dividdivid="aa"> 
          13. <dividdivid="bb">子divdiv> 
          14. <dividdivid="cc">子divdiv> 
          15. <dividdivid="dd">子div<br/><br/><br/><br/><br/>div> 
          16. div> 
          17.  

          效果:


          二、DIV高度自適應(子div高度隨父親div高度改變而改變)

          在有邊框的情況下,你會發現同一個div,在IE下的高度和在FF下的高度是不一樣的,比如你設置了高度為100px的div,邊框是 border:5px;IE的高度是5+5+空白區域=100px,而FF下高度是100px的div是不包括高度的,只是空白區域的高度,如下圖黑框的 部分:


          黑框的上方是對齊的,但是設置了同樣的高度,效果卻不一樣,代碼如下:

          1. <styletypestyletype="text/css"> 
          2.  
          3. #aa{border:#000000solid5px;height:100px;}  
          4.  
          5. #bb{border:#00ffffsolid5px;float:left;height:100%}  
          6.  
          7. #cc{border:#0033CCsolid5px;float:left}  
          8.  
          9. style> 
          10.  
          11. <dividdivid="aa"> 
          12.  
          13. <dividdivid="bb">子divdiv> 
          14.  
          15. <dividdivid="cc">子divdiv> 
          16.  
          17. div> 

          如果沒有設置邊框,完全沒有高度不一致的情況,子div適應父div很簡單,如上面代碼,只是在子div加了height:100%屬性即可。如果 設置了邊框,可以把子div的高度設置為比父div小上下邊框高度的值,比如在此例中,可把#bb中height改為100-5-5=90px,結果在 IE和Mozilla中顯示一致。

          有一點要注意,如果父div是body的話,也就是說一個body套了一個div,讓div適合body的大小的,必須設置body的高度才能實現子div隨body改變而改變,body{height:100%}

          posted on 2013-04-25 16:18 何楊 閱讀(295) 評論(0)  編輯  收藏 所屬分類: CSS
          主站蜘蛛池模板: 蒲江县| 陕西省| 仪征市| 海晏县| 囊谦县| 乌兰浩特市| 镇赉县| 北碚区| 天津市| 丰顺县| 贞丰县| 河北区| 襄汾县| 大田县| 新兴县| 梧州市| 潼南县| 宜春市| 旌德县| 镇远县| 秭归县| 乐陵市| 翁牛特旗| 乌拉特后旗| 讷河市| 博客| 黔东| 济阳县| 镇原县| 宾阳县| 浦江县| 宜兰县| 兖州市| 恭城| 乐陵市| 习水县| 临猗县| 松江区| 鄢陵县| 滕州市| 连平县|