日期:2014-05-17  浏览次数:20628 次

转载 div+css 完美自适应高度 布局

? 以前做后台管理框架基本都是采用iframe来布局,即便是现在这种布局还有着广泛的应用。众所周知现在不管是前台还是后台都提倡采用DIV+CSS布局,至于这样左右什么好处这里不做阐述,Google 一下就能找到一大堆资料。Leeo 本人也比较喜欢DIV布局,并且一直在各个项目中努力由表格布局转向DIV+CSS布局。

????? 我们知道用iframe框架做后台基本上都不用考虑什么高度自适应问题,因为iframe自动会自适应浏览器高度。但是用DIV+CSS来做布局,自适应 浏览器高度就成了令人头疼的问题,因为即使你给DIV加上了height: 100%结果你还是发现根本不起作用,DIV依然只显示了其包含的内容的高度。难道是DIV对这样的高度设置根本就不认帐吗?其实不是的,只是因为DIV 的高度属性跟它的父元素的高度属性是有关系的,前面说到的高度设置不起作用,其实是因为它的父元素的高度没有做相应设置造成的。

????? 下面是Leeo 我写的一个完美DIV+CSS自适应高度后台框架,这里我之所以给它加上“完美”这两个字,是因为这个布局框架在IE5.5、IE6、IE7、IE8、Firefox、Chrome、Safari各浏览器下均表现完美,直接看代码吧:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>DIV布局——IT北瓜原创</title>
<style type="text/css">
html,body{
    font: 100% 微软雅黑, 宋体, 新宋体;
    margin: 0; /* 最好将 body 元素的边距和填充设置为 0 以覆盖不同的浏览器默认值 */
    padding: 0;
    text-align: center; /* 在 IE 5* 浏览器中,这会将容器居中。文本随后将在 #container 选择器中设置为默认左对齐 */
    color: #FFF;
    height: 100%; /*这里将高度设置为100%是这个布局实现自适应高度的关键,只有这里设置了高度,下面div的高度设置才起作用*/
    background-color: #000;
}
#layout {
    width: 100%;
    height: 100%;
    margin: 0px auto;
}
#header {
    height: 13%;
    background-color: #09F;
}
#container {
    height: 82%;
   background-color: #CC3;
}
#container #sidebar {
    height: 100%;
    width: 20%;
    background-color: #C03;
    float: left;
}
#container #main {
   height: 100%;
    width: 80%;
    background-color: #CFC;
    float: left;
}
#footer {
    height: 5%;
    background-color: #930;
}
.clearfloat { /* 此类应当放在 div 或 break 元素上,而且该元素应当是完全包含浮动的容器关闭之前的最后一个元素 */
    clear:both;
    height:0;
    font-size: 1px;
    line-height: 0px;
}
</style>
</head>

<body>
    <div id="layout">
        <div id="header">

        </div>
        <div id="container">
            <div id="sidebar">
            </div>
            <div id="main">
            </div>
            <br class="clearfloat" />
        </div>
        <div id="footer">

        </div>
    </div>
</body>
</html>

实际效果请看这里DEMO

1 楼 哥的传说 2011-01-24  
不错的文章 不用写一大堆的hack
2 楼 xiaopaozi 2011-12-19  
相当不错,方法简单效果好