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>                |