css佈局之左側固定右側自適應佈局

技術小胖子發表於2017-11-07

 1.固定高度


  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv=“Content-Type” content=“text/html; charset=utf-8”> 
  5. <title>左側固定+右側欄自適應寬度</title> 
  6. <style type=“text/css”> 
  7.     margin:0; 
  8.     padding:0; 
  9. #mainBody 
  10.  
  11.     margin:0 auto; 
  12.     border:1px solid #ccc; 
  13.     padding:5px; 
  14. #leftCol 
  15.     width:120px; 
  16.     height:400px; 
  17.     border:1px solid #ccc; 
  18.     background-color:#f0f0f0; 
  19.     position:absolute; 
  20. #rightCol 
  21.     border:1px solid #ccc; 
  22.     background-color:#f0ffff; 
  23.     height:400px; 
  24.     margin-left:127px; 
  25. </style> 
  26. </head> 
  27.  
  28. <body> 
  29.     <div id=“mainBody”> 
  30.         <div id=“leftCol”> 
  31.         </div> 
  32.         <div id=“rightCol”> 
  33.         </div> 
  34.     </div> 
  35. </body> 
  36. </html> 

截圖:

 

這裡只截了IE6的。

注:如果佈局元素不是body子級,加個position:relative;即可。

 

除了使用定位以外,用浮動float:left也可以,原理都是脫離文件流,把控制元件留給其他元素。

 

 

但是有個問題, 由於absolute使得外面容器的高度取決於那個自適應的元素,比如我把高度改為300px看一下。

 

2.我們來拿float:left;這個方案討論一下

我們知道對於浮動元素,脫離文件流,父元素捕捉不到其高度height,所以如果float的那個元素比較高,勢必超出容器的邊界。

我們思考,如果富容器也是float,是不是就可以擺脫這種現狀,但是如果無限制的float,勢必需要頂層做個清理。

所以我們採用多套一層float容器的方式實現:

我們上程式碼:

 


  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4. <meta http-equiv=“Content-Type” content=“text/html; charset=utf-8”> 
  5. <title>左側固定+右側欄自適應寬度</title> 
  6. <style type=“text/css”> 
  7.     margin:0; 
  8.     padding:0; 
  9. body 
  10.     padding:10px; 
  11. #mainBody 
  12.     width0:950px; 
  13.     margin:0 auto; 
  14.     border:1px solid #ccc; 
  15.     padding:5px; 
  16.     position0::relative; 
  17.     overflow:hidden; 
  18.     height:1%; 
  19. #layoutContainer 
  20.     float:left; 
  21.     width:100%;  
  22. #leftCol 
  23.     width:120px; 
  24.     height:200px; 
  25.     border:1px solid #ccc; 
  26.     background-color:#f0f0f0; 
  27.     float:left; 
  28. #rightCol 
  29.     border:1px solid #ccc; 
  30.     background-color:#f0ffff; 
  31.     height:300px; 
  32.     margin-left:127px; 
  33. </style> 
  34. </head> 
  35.  
  36. <body> 
  37.     <div id=“mainBody”> 
  38.         <div id=“layoutContainer”> 
  39.             <div id=“leftCol”> 
  40.             </div> 
  41.             <div id=“rightCol”> 
  42.             </div> 
  43.         </div> 
  44.     </div> 
  45. </body> 
  46. </html> 

上圖:

 

 

注:解決可能的ie莫名白條問題。

對ie自適應列單獨設定:

*margin-left:5px;/*兩列之間的間距*/ *float:left;







 本文轉自 xcf007 51CTO部落格,原文連結:http://blog.51cto.com/xcf007/525082,如需轉載請自行聯絡原作者


相關文章