以下是引用HTML文档,说明我的问题:意外盒模型行为<table>
<!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兼容meta标记的组合应该切换任何现代浏览器它支持的最符合标准的模式。该文件包含两个绝对定位的元素,<div>
和<table>
。它们并排排列,具有完全相同的宽度,高度和边框CSS。没想到,我测试了所有的浏览器渲染的文件是这样的:
alt text http://img204.imageshack.us/img204/853/screen1tu.png
的<div>
(绿色)如下盒模型。内容区域高30像素(绿色像素),下方有1像素边框(总高度为31像素,CSS高度指令被解释为'不包含边框')。然而,在内容区域29像素高(红色像素)下面带有1像素的边界(整体高度为30像素,因此在这种情况下,CSS高度被解释为'包括边界')的情况下呈现该内容区域。
我的问题是,为什么盒子模型有例外(元素的高度不应包含边框,但它对于<table>
很明显)?这是在W3C规范中记录的吗?我可以依靠这种行为走向未来吗?我测试了IE7,IE8,Opera10.10,Safari4.0.4,Chrome3.0,Firefox3.5这个页面,所有渲染文件都完全相同(在Win7x64上)。
是一个没有任何行或单元格有效的标记表?它有用吗?只是好奇。 – 2010-01-13 15:47:19
@Jamie Ide:这只是说明行为的最简单的例子。我的实际表格自然具有单元格。但无论(单元格还是没有单元格),渲染都是相同的 - 即使在所有现代浏览器的标准模式下,高度都被解释为包含边框。 – 2010-01-13 15:53:26