样式='width:100%;' 的浏览器之间不一致(如果有 CSS 显示定义)



我在浏览器之间发现了不同的行为。我有一个动态生成的TABLE,所以宽度应该根据父DIV:计算

<html>
<body>
<div style='width:800px; border:1px dotted blue;'>
<table style='width:100%; display:inline-block; font-size:40px;'>
<tr><td>1</td><td align=right>2</td></tr>
</table>
<table style='width:100%; display:inline; font-size:40px;'>
<tr><td>1</td><td align=right>2</td></tr>
</table>
<table style='width:100%; display:block; font-size:40px;'>
<tr><td>1</td><td align=right>2</td></tr>
</table>
<table style='width:100%; font-size:40px;'>
<tr><td>1</td><td align=right>2</td></tr>
</table>
</div>
</body></html>

Safari和Opera在DIV的右边界正确显示了列"2"。Chrome和Firefox似乎忽略了宽度:如果有显示定义,则为100%。在第4种情况下,没有显示定义,并且表被正确渲染。

知道为什么吗?

所有表的宽度都是800px。然而,在Chrome和FF中,tbody元素的宽度不等于其父元素的100%,其中table元素的显示属性不是默认属性。

在表的显示属性不是默认属性的情况下,W3C没有定义tbody元素的宽度。这鼓励在不同的浏览器中进行不同的实现。

最新更新