猿吟鹤唳本无意,不知下有行人行

实现侧边栏/分栏高度自动相等-overflow:hidden

今天群有人说,侧边栏问题。然后突然想总结。各种搜索试验。不过还是很不明白那么大的数值正负,有知道跟分享下~
布局一律是这个
<div class="main">
    <div class="left"></div>
    <div class="right"></div>
</div>
 
有5种方法可以实现侧边栏高度自适应
1、采用背景图模拟2栏等高。父容器,main实现背景图垂直平铺填充模拟两栏等高。
但会增加一个额外的背景图片的HTTP请求,延缓页面的加载速度;同时也只有等到背景图被完全加载以后才会在视觉上实现“等高。若是布局两栏宽度改变,图片也要进行改变。
2、是采用超大的负值下外边距+下内填充的方法来实现,需要给父容器加一个overflow:hidden。
不好的地方在于,如果恰巧你的2栏被设置了边框,那你会损失掉下边框。
3、是采用display:table-cell的方式将需要等高的容器模拟成表格列,我们知道表格列是默认等高的。只是此属性IE7-不支持。
4、在父容器里面加上overflow:hidden;此清除方法强制使 .main了解列的结束位置,以便显示在 .container 中放置的任何边框或背景颜色。
5、使用min-height属性,IE6不支持min-height但是height会自动撑高,所以min-height + _height的组合也是常用手段之一。
其中第二种和第四种做了对比,第二种若是左右两栏的颜色一致,那么只需要overflow:hidden即可。在父容器设置背景色为同一颜色。若是左右两栏颜色不一致,可加上正负边距。(这个地方我不明白为什么要加上那么大的正负边距,且要超过你的最大网页分辨率)
 
说明:核心CSS代码部分的3000像素是个可变值,如果您的分栏高度不可能高度超过2000像素,您就可以设为2000像素,如果会超过3000像素,那么您要修改值为4000像素或是更高。
父标签的overflow:hidden属性是必须的,否则会显示溢出的内容
 
css:body为黑色,定义父容器为白色,左栏为灰色 右栏为黄色以示区分。
.main{ width:1000px; background:#fff; margin:0 auto; padding:0;  }
.right{  width:700px; background:#ff0; float:left;}
.left{  width:300px; background:#ccc; }

图:好犬牙交错参差不齐啊~
 
css:
.main{ width:1000px; background:#fff; margin:0 auto; padding:0; overflow:hidden;  }
.right{  width:700px; background:#ff0; float:left;}
.left{  width:300px; background:#ccc; }
图:出现了main的背景色哟~ 背景色一致的时候推荐使用。
css:
.main{ width:1000px; background:#fff; margin:0 auto; padding:0; overflow:hidden;  }
.right{  width:700px; background:#ff0; float:left;margin-bottom:-3000px; padding-bottom:3000px;}
.left{  width:300px; background:#ccc;margin-bottom:-3000px; padding-bottom:3000px;}
图: 短的那栏也在自己的颜色基础上对齐了~ 各栏目颜色不一致的时候使用~

 

发表评论

您的电子邮箱地址不会被公开。