看了之前的《两列一边宽度固定,另一边宽度自适应布局》后,觉得iVane的方法还可以再优化一下的,比如可以少用一个div……
自适应的问题也是布局中常会遇到的问题,最早用负边界的方法解决了高度自适应,没想法现在用负边界同样可以解决宽度自适应的问题。来看看怎样做吧:
================HTML===================
<body>
<div id="top">top</div>
<div id="main">
<div id="midpart"><p>主要内容部分,宽高自适应。</p></div>
<div id="leftpart"><p>左栏宽200像素,高度自适应。</p></div>
</div>
<div id="bottom">bottom</div>
</body>
======================================
================CSS===================
#top,#bottom{
clear:both;
width:100%;
height:auto;
padding:10px 0;
background-color:#0099FF;
}
#main{
_width:100%;
height:auto;
overflow:hidden;
padding:0;
padding-left:200px;
color:#000000;
}
#leftpart,#midpart{
height:auto;
margin-bottom:-32767px;
padding-bottom:32767px;
}
#midpart{
float:right;
width:100%;
background-color:#00CC99;
}
#leftpart{
_display:inline;
float:left;
width:200px;
margin-left:-200px;
padding-top:30px;
background-color:#999900;
}
======================================
这里对宽度自适应做了优化,并增加了高度自适应。如果要改成其它的二栏布局就很容易啦,比如可以改成“右栏定宽”或“左右栏都自适应宽高”。大家自己发挥吧~:)
注:此布局兼容IE5.5+、FF2、OP9+,其它版本的浏览没有测试过,有条件的同学帮忙看下吧。
在ie7 中没问题,但是ie6 #midpart的右边宽出200px
跟我在《CSS布局实录》上看到的一致..
自适应高度这里不知道可以兼容复杂度多高的内容,作为Demo可以完美呈现,不知道具体应用的时候如何?
我对那个margin溢出方法解决等高问题一直很谨慎,呵呵