CSS布局实例:上中下三行布局,上下定高,中间栏自适应浏览器高度,且内容垂直居中。本文代码在firefox 2.0 / win ie 6/ win ie 7 /opera 8.5 cn/win safari 测试通过。对于非ie内核浏览器,通过设定display:table、display:table-row和display:table-cell来模拟表格的表现形式。
最外层#box { display:table; },高度100%,其子层#header/#main/#footer为{ display:table-row; },因此可以模拟表格的行效果,上下定高,则中间不定高的层自适应高度。
#wrap层为{ display:table-cell; }模拟单元格,因此可以设定{ vertical-align:middle; },垂直居中。
由于Win IE不支持{ display:table; },因此,只能采取定位的方式实现。内是针对ie的设定。
以下是引用片段:
<!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=gb2312";/>
<title>上中下三行布局,上下定高,中间栏自适应浏览器高度,且内容垂直居中</title>
<style;type="text/css">
*;{;
margin:0
padding:0
};
html,;
body,;
#box;{;
height:100%
font:small/1.5;"宋体",;serif
};
body;{;
text-align:center
};
#box;{;
text-align:left
background:#666
display:table
width:80%
margin:0;auto
position:relative
};
#box;>;div;{;
display:table-row
};
#header,;
#footer;{;
background:#fcc
height:50px
};
#main;{;
background:#ccf
};
#main;#wrap;{;
display:table-cell
background:#ffc
vertical-align:middle
};
#text;{;
text-align:center
};
</style>
<!--[if;IE]>
<style;type="text/css">
#header,;
#footer;{;
width:100%
z-index:3
position:absolute
};
#footer;{;
bottom:0
};
#main;{;
height:100%
z-index:1
position:relative
};
#main;#wrap;{;
position:absolute
top:50%
width:100%
text-align:left
};
#main;#text;{;
position:relative
width:100%
top:-50%
background:#ccc
};
</style>
<![endif]-->
</head>
<body>
<div;id="box">
<div;id="header">header</div>
<div;id="main">
<div;id="wrap">
<div;id="text">
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
<p>内容内容</p>
</div>
</div>
</div>
<div;id="footer">footer</div>
</div>
</body>
</html>;