代码之家  ›  专栏  ›  技术社区  ›  Milan Gardian

<table>

  •  7
  • Milan Gardian  · 技术社区  · 16 年前

    以下是说明我的问题的参考HTML文档:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta http-equiv="X-UA-Compatible" content="IE=edge" />
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Box model test</title>
            <style type="text/css">
                html,body { margin:0; padding:0; background-color:#808080;}
                #box { position:absolute; top:20px; left:20px; background-color:Green; }
                #tbl { position:absolute; top:20px; left:40px; background-color:Red; }
                .common { width:20px; height:30px; border-bottom:solid 1px black; }
            </style>
        </head>
        <body>
            <div id="box" class="common"></div>
            <table id="tbl" class="common"></table>
        </body>
    </html>
    

    HTML5 doctype和X-UA兼容元标记的组合应该将任何现代浏览器切换到它支持的最符合标准的模式。文档包含两个绝对定位的元素,一个 <div> 和 <table> . 它们并排排列,宽度、高度和边框完全相同。出乎意料的是,我测试的所有浏览器都会将文档呈现为这样:

    alt text http://img204.imageshack.us/img204/853/screen1tu.png

    这个 <部门>

    <表> 但是,渲染内容区域时,其高度为29像素(红色像素),下方有一个边框像素(总高度为30像素,因此在本例中,CSS高度被解释为“包括边框”)。

    <表>

    附言

    4 回复  |  直到 16 年前
        1
  •  2
  •   Allan Jardine    16 年前

    在定义单元格的高度时,我也看到了类似的问题,显然表的使用了边框框模型,而不是内容框。我强烈怀疑,但目前没有证据支持这一点,这是为了保持与基于表的布局的兼容性。例如,如果要设置宽度100%和边框或边距,则会出现滚动问题(假设表格占用整个窗口)。

    这实际上是border box模型的优点,因为使用内容框很难实现100%-100px,但在这里很简单。幸运的是,有了CSS3,我们可以选择为块级元素使用边框框,这可能是它首先应该使用的。我记得有一次听说IE5实现了border box,因为它是在愚蠢的规范中实现的,后来就改变了。

    仔细阅读有关表格布局的CSS规范可能会确认是否存在这种情况。

    当做

        2
  •  2
  •   graphicdivine    16 年前

    很好奇。我可以让他们表现出相同的行为,但只有通过包括 <tr> 和 <td> border-collapse: collapse 和 display: table

    http://jsbin.com/ijila

    这本身并不是一个解决方案,但它可能有助于阐明这一点。

        3
  •  -1
  •   Wyatt Barnett    16 年前

    添加 border-collapse: collapse #tbl css。你仍然有手机填充。