css布局之左侧固定右侧自适应布局

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值