• [转载]div仿框架(B/S结构软件界面)详解[非quirks模式全兼容]


    原文源于:http://bbs.blueidea.com/thread-2928157-1-2.html

    [参与测试的浏览器:IE6 / IE7 / IE8 / FF3 / OP9.6 / SF3 / Chrome2 ]
    [操作系统:Windows]

    问这样的问题的人很多,我对此有比较深入的研究,但自己从来没有给出过完整的解答与分析,觉得有些对不住蓝色理想的列祖列宗。

    先请看demo:

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3     <head>
     4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5         <meta name="author" content="Chomo" />
     6         <link rel="start" href="http://www.14px.com" title="Home" />
     7         <title>div仿框架布局</title>
     8         <style type="text/css">
     9             * { margin:0; padding:0; list-style:none;}
    10             html { height:100%; overflow:hidden; background:#fff;}
    11             body { height:100%; overflow:hidden; background:#fff;}
    12             div { background:#f60; line-height:1.6;}
    13             .top { position:absolute; left:10px; top:10px; right:10px; height:50px;}
    14             .side { position:absolute; left:10px; top:70px; bottom:70px; width:200px; overflow:auto;}
    15             .main { position:absolute; left:220px; top:70px; bottom:70px; right:10px; overflow:auto;}
    16             .bottom { position:absolute; left:10px; bottom:10px; right:10px; height:50px;}
    17             /*---ie6---*/
    18             html { _padding:70px 10px;}
    19             .top { _height:50px; _margin-top:-60px; _margin-bottom:10px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    20             .side { _height:100%; _float:left; _width:200px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    21             .main { _height:100%; _margin-left:207px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    22             .bottom { _height:50px; _margin-top:10px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    23         </style>
    24     </head>
    25     <body>
    26         <div class="top"></div>
    27         <div class="side">
    28             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    29             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    30             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    31             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    32             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    33             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    34             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    35             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    36             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    37         </div>
    38         <div class="main">
    39             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    40             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    41             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    42             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    43             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    44             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    45             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    46             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    47             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    48         </div>
    49         <div class="bottom"></div>
    50     </body>
    51 </html>


    让我们将应该有滚动条的地方的滚动条效果折腾出来:

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3     <head>
     4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5         <meta name="author" content="Chomo" />
     6         <link rel="start" href="http://www.14px.com" title="Home" />
     7         <title>div仿框架布局 - 加上滚动条,一个div仿框架的基础概型已经完成</title>
     8         <style type="text/css">
     9             * { margin:0; padding:0; list-style:none;}
    10             html,body { height:100%; overflow:hidden; background:#fff;}
    11             div { background:#f60; line-height:1.6;}
    12             .top { position:absolute; left:10px; top:10px; right:10px; height:50px; overflow:auto;}
    13             .side { position:absolute; left:10px; top:70px; bottom:70px; width:200px; overflow:auto;}
    14             .main { position:absolute; left:220px; top:70px; bottom:70px; right:10px; overflow:auto;}
    15             .bottom { position:absolute; left:10px; bottom:10px; right:10px; height:50px; overflow:auto;}
    16         </style>
    17     </head>
    18     <body>
    19         <div class="top"></div>
    20         <div class="side">
    21             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    22             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    23             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    24             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    25             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    26             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    27             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    28             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    29             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    30         </div>
    31         <div class="main">
    32             <br /><br /><br />加上滚动条,一个div仿框架的基础概型已经完成
    33             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    34             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    35             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    36             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    37             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    38             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    39             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    40             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    41         </div>
    42         <div class="bottom"></div>
    43     </body>
    44 </html>


    以上方法其实早已由wiseinfo在Html+CSS 构建 B/S结构软件界面 — 布局篇 — position方式中 进行过介绍,在该文中,ie6亦是分而治之的,它的方法是在html代码顶部加入“<?xml version=”1.0″ encoding=”UTF-8″?>”,使得ie6进入quirks mode(怪异模式)来完成ie6下的div仿框架,但这样做将出现一些影响比较显著的弊端:

    1. quirks mode下的ie6连盒模型都变了,就是说你在页面中写任何内容就要慎用padding和border,况且quirks mode下的变化还不止这一点。
    2. 如果底部使用绝对定位,则会发生“绝对定位基对象(在此为body)高度为偶数时,出现1px空隙”的bug。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4     <head>
     5         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     6         <meta name="author" content="Chomo" />
     7         <link rel="start" href="http://www.14px.com" title="Home" />
     8         <title>div仿框架布局 - 将ie6导入了quirks mode(怪异模式),很有弊端</title>
     9         <style type="text/css">
    10             * { margin:0; padding:0; list-style:none;}
    11             .div1 { background:#fc0; line-height:1.6; width:400px; height:100px; border:50px solid #f60; padding:20px;}
    12             .div2 { background:#f60; line-height:1.6; width:400px; height:100px; position:absolute; bottom:0; left:0;}
    13         </style>
    14     </head>
    15     <body>
    16         <div class="div1">该页面请在ie6和非ie6下对比,ie6下连盒模型都变了,就是说你在页面中写任何内容就要慎用padding和border,况且quirks mode下的变化还不止这一点。</div>
    17         <div class="div2">
    18             如果底部使用绝对定位,则会发生“绝对定位基对象(在此为body)高度为偶数时,出现1px空隙”的bug。<br />
    19             您可以试着改变浏览器的大小进行观测。
    20         </div>
    21     </body>
    22 </html>

    于是我们需要另辟蹊径。

    在很多次失败之后,我终于发现有一个标签可以救ie6于水深火热,那就是最伟大的“<html>”标签,它继承了ie6 quirks mode(怪异模式)下的盒模型状态。

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3     <head>
     4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5         <meta name="author" content="Chomo" />
     6         <link rel="start" href="http://www.14px.com" title="Home" />
     7         <title>div仿框架布局 - ie6中,伟大的&lt;html&gt;标签继承了ie6 quirks mode(怪异模式)下的盒模型状态</title>
     8         <style type="text/css">
     9             * { margin:0; padding:0; list-style:none;}
    10             html { padding:50px; height:100%; background:#f60; overflow:hidden; background:#fff;}
    11             body { height:100%; background:#fc0; overflow:auto; line-height:1.6;}
    12         </style>
    13     </head>
    14     <body>
    15         <br /><br /><br />
    16         请使用ie6浏览本页面<br />
    17         ie6中,伟大的&lt;html&gt;标签继承了ie6 quirks mode(怪异模式)下的盒模型状态<br />
    18         这样,我们便有了可乘之机<br />
    19         <br /><br /><br /><br /><br /><br /><br /><br />
    20         <br /><br /><br /><br /><br /><br /><br /><br />
    21         <br /><br /><br /><br /><br /><br /><br /><br />
    22         <br /><br /><br /><br /><br /><br /><br /><br />
    23         <br /><br /><br /><br /><br /><br /><br /><br />
    24         <br /><br /><br /><br /><br /><br /><br /><br />
    25         <br /><br /><br /><br /><br /><br /><br /><br />
    26     </body>
    27 </html>

    利用这一点,我们可以在不太轻松的调整之后完成以下效果:

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3     <head>
     4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5         <meta name="author" content="Chomo" />
     6         <link rel="start" href="http://www.14px.com" title="Home" />
     7         <title>div仿框架布局 - 先分出三行来</title>
     8         <style type="text/css">
     9             * { margin:0; padding:0; list-style:none;}
    10             html { padding:70px 10px; height:100%; background:#fff; overflow:hidden;}
    11             body { height:100%; background:#fff; overflow:hidden;}
    12             div { background:#f60; line-height:1.6;}
    13             .top { height:50px; margin-top:-60px; margin-bottom:10px; position:relative;}
    14             .main { height:100%;}
    15             .bottom { height:50px; margin-top:10px; position:relative;}
    16         </style>
    17     </head>
    18     <body>
    19         <div class="top"></div>
    20         <div class="main">先分出三行来(请在ie6下浏览)</div>
    21         <div class="bottom"></div>
    22     </body>
    23 </html>


    再用下我们的二列布局知识来完成最终形态,在此我们将艳遇著名的3px bug(不喜欢它可以找点别的办法):

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3     <head>
     4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5         <meta name="author" content="Chomo" />
     6         <link rel="start" href="http://www.14px.com" title="Home" />
     7         <title>div仿框架布局 - 再分出两列</title>
     8         <style type="text/css">
     9             * { margin:0; padding:0; list-style:none;}
    10             html { padding:70px 10px; height:100%; background:#fff; overflow:hidden;}
    11             body { height:100%; background:#fff; overflow:hidden;}
    12             div { background:#f60; line-height:1.6;}
    13             .top { height:50px; margin-top:-60px; margin-bottom:10px; position:relative;}
    14             .side { height:100%; float:left; width:200px; overflow:auto; position:relative;}
    15             .main { height:100%; margin-left:207px; overflow:auto; position:relative;}
    16             .bottom { height:50px; margin-top:10px; position:relative;}
    17         </style>
    18     </head>
    19     <body>
    20         <div class="top"></div>
    21         <div class="side">
    22             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    23             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    24             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    25             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    26             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    27             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    28             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    29             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    30             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    31         </div>
    32         <div class="main">
    33             <br /><br /><br />再分出两列(还是请在ie6下浏览)
    34             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    35             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    36             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    37             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    38             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    39             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    40             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    41             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    42         </div>
    43         <div class="bottom"></div>
    44     </body>
    45 </html>


    现在我们拥有了ie6的仿框架和非ie6的div仿框架的最终形态,只需要利用hack做个简单的加法则行了:
    (当然,同一属性写两遍,后面的属性所对应的值将覆盖前者,这个基础的优先级基础大家还需要温故一下。)
    (再“当然”一下——当然,有人对hack深恶痛绝,那么请在使用之前,阅读此文看看是否能消消心头之恨。)

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3     <head>
     4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5         <meta name="author" content="Chomo" />
     6         <link rel="start" href="http://www.14px.com" title="Home" />
     7         <title>div仿框架布局 - 让我们荡起双桨</title>
     8         <style type="text/css">
     9             * { margin:0; padding:0; list-style:none;}
    10             html { height:100%; overflow:hidden; background:#fff;}
    11             body { height:100%; overflow:hidden; background:#fff;}
    12             div { background:#f60; line-height:1.6;}
    13             .top { position:absolute; left:10px; top:10px; right:10px; height:50px;}
    14             .side { position:absolute; left:10px; top:70px; bottom:70px; width:200px; overflow:auto;}
    15             .main { position:absolute; left:220px; top:70px; bottom:70px; right:10px; overflow:auto;}
    16             .bottom { position:absolute; left:10px; bottom:10px; right:10px; height:50px;}
    17             /*---ie6---*/
    18             html { _padding:70px 10px;}
    19             .top { _height:50px; _margin-top:-60px; _margin-bottom:10px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    20             .side { _height:100%; _float:left; _width:200px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    21             .main { _height:100%; _margin-left:207px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    22             .bottom { _height:50px; _margin-top:10px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    23         </style>
    24     </head>
    25     <body>
    26         <div class="top"></div>
    27         <div class="side">
    28             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    29             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    30             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    31             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    32             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    33             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    34             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    35             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    36             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    37         </div>
    38         <div class="main">
    39             <br /><br /><br />让我们荡起双桨<br />
    40             一个兼容性很好的div仿框架的基础概型便完成了<br />
    41             <br /><br /><br /><br /><br /><br /><br /><br />
    42             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    43             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    44             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    45             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    46             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    47             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    48             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    49             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    50         </div>
    51         <div class="bottom"></div>
    52     </body>
    53 </html>

    它很强大而实用,真的:

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3     <head>
     4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5         <meta name="author" content="Chomo" />
     6         <link rel="start" href="http://www.14px.com" title="Home" />
     7         <title>div仿框架布局 - 如果您有丰富的想象力,还可以玩些更刺激的</title>
     8         <style type="text/css">
     9             * { margin:0; padding:0; list-style:none;}
    10             html,body { height:100%; overflow:hidden; background:#fff;}
    11             div { background:#f60; line-height:1.6;}
    12             .top { position:absolute; left:10px; top:10px; right:10px; height:50px;}
    13             .side { position:absolute; left:10px; top:70px; bottom:70px; width:200px; overflow:auto;}
    14             .main { position:absolute; left:220px; top:100px; bottom:100px; right:10px; overflow:auto;}
    15             .bottom { position:absolute; left:10px; bottom:10px; right:10px; height:50px;}
    16             .mainTop { position:absolute; height:30px; top:60px; left:220px; right:10px;}
    17             .mainBottom { position:absolute; height:30px; bottom:60px; left:220px; right:10px;}
    18             /*--- ie6 ---*/
    19             html { _padding:100px 10px;}
    20             .top { _margin-top:-90px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    21             .side { _height:100%; _padding:30px 0; _margin-top:-30px; _float:left; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    22             .main { _height:100%; _margin-left:207px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    23             .bottom { _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    24             .mainTop { _margin-bottom:10px; _margin-left:210px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    25             .mainBottom { _margin-top:10px; _margin-left:207px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    26         </style>
    27     </head>
    28     <body>
    29         <div class="top"></div>
    30         <div class="mainTop"></div>
    31         <div class="side">
    32             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    33             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    34             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    35             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    36             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    37             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    38             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    39             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    40             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    41         </div>
    42         <div class="main">
    43             <br /><br /><br />
    44             如果您有丰富的想象力,还可以玩些更刺激的。
    45             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    46             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    47             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    48             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    49             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    50             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    51             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    52             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    53             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    54         </div>
    55         <div class="mainBottom"></div>
    56         <div class="bottom"></div>
    57     </body>
    58 </html>

    但在实际应用中主体部分常常是个iframe,加个iframe,IE7则无法适应。T_T

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3     <head>
     4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5         <meta name="author" content="Chomo" />
     6         <link rel="start" href="http://www.14px.com" title="Home" />
     7         <title>div仿框架布局 - 但在实际应用中主体部分常常是个iframe</title>
     8         <style type="text/css">
     9             * { margin:0; padding:0; list-style:none;}
    10             html { height:100%; overflow:hidden; background:#fff;}
    11             body { height:100%; overflow:hidden; background:#fff;}
    12             div { background:#f60; line-height:1.6;}
    13             .top { position:absolute; left:10px; top:10px; right:10px; height:50px;}
    14             .side { position:absolute; left:10px; top:70px; bottom:70px; width:200px; overflow:auto;}
    15             .main { position:absolute; left:220px; top:70px; bottom:70px; right:10px; overflow:auto;}
    16             .bottom { position:absolute; left:10px; bottom:10px; right:10px; height:50px;}
    17             .main iframe { width:100%; height:100%;}
    18             /*---ie6---*/
    19             html { _padding:70px 10px;}
    20             .top { _height:50px; _margin-top:-60px; _margin-bottom:10px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    21             .side { _height:100%; _float:left; _width:200px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    22             .main { _height:100%; _margin-left:207px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    23             .bottom { _height:50px; _margin-top:10px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    24         </style>
    25     </head>
    26     <body>
    27         <div class="top">但在实际应用中主体部分常常是个iframe,加个iframe,IE7则无法适应</div>
    28         <div class="side">
    29             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    30             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    31             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    32             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    33             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    34             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    35             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    36             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    37             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    38         </div>
    39         <div class="main">
    40             <iframe frameborder="0" src="http://www.g.cn/"></iframe>
    41         </div>
    42         <div class="bottom"></div>
    43     </body>
    44 </html>

    而且……其实IE7下还不止这一点bug(虽然可以直接overflow-y:scroll,但我于心不忍)。

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3     <head>
     4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5         <meta name="author" content="Chomo" />
     6         <link rel="start" href="http://www.14px.com" title="Home" />
     7         <title>div仿框架布局 - 其实IE7下还不止这一点bug</title>
     8         <style type="text/css">
     9             * { margin:0; padding:0; list-style:none;}
    10             html { height:100%; overflow:hidden; background:#fff;}
    11             body { height:100%; overflow:hidden; background:#fff;}
    12             div { background:#f60; line-height:1.6;}
    13             .top { position:absolute; left:10px; top:10px; right:10px; height:50px;}
    14             .side { position:absolute; left:10px; top:70px; bottom:70px; width:200px; overflow:auto;}
    15             .main { position:absolute; left:220px; top:70px; bottom:70px; right:10px; overflow:auto; font-size:14px;}
    16             .bottom { position:absolute; left:10px; bottom:10px; right:10px; height:50px;}
    17             /*---ie6---*/
    18             html { _padding:70px 10px;}
    19             .top { _height:50px; _margin-top:-60px; _margin-bottom:10px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    20             .side { _height:100%; _float:left; _width:200px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    21             .main { _height:100%; _margin-left:207px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    22             .bottom { _height:50px; _margin-top:10px; _position:relative; _top:0; _right:0; _bottom:0; _left:0;}
    23         </style>
    24     </head>
    25     <body>
    26         <div class="top">其实IE7下还不止这一点bug</div>
    27         <div class="side">
    28             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    29             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    30             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    31             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    32             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    33             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    34             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    35             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    36             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    37         </div>
    38         <div class="main">
    39             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    40             <p>现在请换用IE7浏览器测试,缩小窗口直到出现滚动条 恢复后会出现一段无聊的距离 然后再刷新这段距离又消失 事实证明这段无聊的距离与滚动条宽度相等。</p>
    41         </div>
    42         <div class="bottom"></div>
    43     </body>
    44 </html>

    所幸IE7和IE6的html标签有着相同的盒模型,所以可以直接将IE6 only的部分修改为IE6+IE7 only。

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3     <head>
     4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5         <meta name="author" content="Chomo" />
     6         <link rel="start" href="http://www.14px.com" title="Home" />
     7         <title>div仿框架布局 - 所幸IE7和IE6的html标签有着相同的盒模型</title>
     8         <style type="text/css">
     9             * { margin:0; padding:0; list-style:none;}
    10             html { height:100%; overflow:hidden; background:#fff;}
    11             body { height:100%; overflow:hidden; background:#fff;}
    12             div { background:#f60; line-height:1.6;}
    13             .top { position:absolute; left:10px; top:10px; right:10px; height:50px;}
    14             .side { position:absolute; left:10px; top:70px; bottom:70px; width:200px; overflow:auto;}
    15             .main { position:absolute; left:220px; top:70px; bottom:70px; right:10px; overflow:auto; font-size:14px;}
    16             .bottom { position:absolute; left:10px; bottom:10px; right:10px; height:50px;}
    17             /*---ie6 / ie7---*/
    18             html { *padding:70px 10px;}
    19             .top { *height:50px; *margin-top:-60px; *margin-bottom:10px; *position:relative; *top:0; *right:0; *bottom:0; *left:0;}
    20             .side { *height:100%; *float:left; *width:200px; *position:relative; *top:0; *right:0; *bottom:0; *left:0;}
    21             .main { *height:100%; *margin-left:210px; _margin-left:207px; *position:relative; *top:0; *right:0; *bottom:0; *left:0;}
    22             .bottom { *height:50px; *margin-top:10px; *position:relative; *top:0; *right:0; *bottom:0; *left:0;}
    23         </style>
    24     </head>
    25     <body>
    26         <div class="top">所幸IE7和IE6的html标签有着相同的盒模型,所以可以直接将IE6 only的部分修改为IE6+IE7 only</div>
    27         <div class="side">
    28             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    29             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    30             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    31             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    32             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    33             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    34             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    35             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    36             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    37         </div>
    38         <div class="main">
    39             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    40             <p>现在请换用IE7浏览器测试,缩小窗口直到出现滚动条,看,现在没有无聊的距离了吧。它被我们修了。再复述一遍这段文字才够长,不要嫌我罗嗦:现在请换用IE7浏览器测试,缩小窗口直到出现滚动条,看,现在没有无聊的距离了吧。它被我们修了。</p>
    41         </div>
    42         <div class="bottom"></div>
    43     </body>
    44 </html>

    iframe无法适应高度的bug也一起被修复了,人生真美好。

     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     3     <head>
     4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     5         <meta name="author" content="Chomo" />
     6         <link rel="start" href="http://www.14px.com" title="Home" />
     7         <title>div仿框架布局 - iframe无法适应高度的bug也一起被修复了</title>
     8         <style type="text/css">
     9             * { margin:0; padding:0; list-style:none;}
    10             html { height:100%; overflow:hidden; background:#fff;}
    11             body { height:100%; overflow:hidden; background:#fff;}
    12             div { background:#f60; line-height:1.6;}
    13             .top { position:absolute; left:10px; top:10px; right:10px; height:50px;}
    14             .side { position:absolute; left:10px; top:70px; bottom:70px; width:200px; overflow:auto;}
    15             .main { position:absolute; left:220px; top:70px; bottom:70px; right:10px; overflow:auto;}
    16             .bottom { position:absolute; left:10px; bottom:10px; right:10px; height:50px;}
    17             .main iframe { width:100%; height:100%;}
    18             /*---ie6---*/
    19             html { *padding:70px 10px;}
    20             .top { *height:50px; *margin-top:-60px; *margin-bottom:10px; *position:relative; *top:0; *right:0; *bottom:0; *left:0;}
    21             .side { *height:100%; *float:left; *width:200px; *position:relative; *top:0; *right:0; *bottom:0; *left:0;}
    22             .main { *height:100%; *margin-left:210px; _margin-left:207px; *position:relative; *top:0; *right:0; *bottom:0; *left:0;}
    23             .bottom { *height:50px; *margin-top:10px; *position:relative; *top:0; *right:0; *bottom:0; *left:0;}
    24         </style>
    25     </head>
    26     <body>
    27         <div class="top">看,亲爱的,iframe无法适应高度的bug也一起被修复了。不过这个修复也可以想想其他的办法:)办法就在本文中,有兴趣的朋友可以自己摸索。</div>
    28         <div class="side">
    29             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    30             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    31             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    32             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    33             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    34             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    35             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    36             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    37             <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    38         </div>
    39         <div class="main">
    40             <iframe frameborder="0" src="http://www.g.cn/"></iframe>
    41         </div>
    42         <div class="bottom"></div>
    43     </body>
    44 </html>
  • 相关阅读:
    然乌湖
    邦达 八宿
    芒康
    巴塘
    禾尼乡 所波大叔
    世界高城 理塘
    相克宗 藏民家
    骑行川藏--新都桥&塔公草原
    d 3
    D2
  • 原文地址:https://www.cnblogs.com/wowchky/p/2728980.html
Copyright © 2020-2023  润新知