【发布时间】:2013-01-29 19:52:22
【问题描述】:
当表格位于 LI 元素内时,我发现表格的边距行为非常奇怪。在 LI 内部,TABLE 在顶部有额外的边距,不能通过使用“margin”或“padding”CSS 样式来取消。取消此操作的唯一方法是为 LI 设置“display: block”(默认为“display: list-item”)。代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Strange table margin behaviour</title>
</head>
<body>
<ul>
<li style="border: 1px solid #009; margin: 0; padding: 0;"><table style="border: 1px solid #ccc; margin: 0; padding: 0;"><tr><td>test</td></tr></table></li>
<li style="border: 1px solid #009; margin: 0; padding: 0;"><table style="border: 1px solid #ccc; margin: 0; padding: 0;"><tr><td>test</td></tr></table></li>
<li style="border: 1px solid #009; margin: 0; padding: 0;"><table style="border: 1px solid #ccc; margin: 0; padding: 0;"><tr><td>test</td></tr></table></li>
</ul>
</body>
</html>
这在 Google Chrome 中呈现为:
我希望:
我真的不明白为什么会出现这种情况? LI 本身没有任何 paddings,TABLE 没有任何边距,但是在一起...
UPD。此页边距仅出现在 Google Chrome (24.0.1312.68) 中。在 Mozilla Firefox (18.0.2) 中没有边距,页面看起来如预期(屏幕截图 #2)。
【问题讨论】:
-
您在这样的列表中嵌套表格有什么特别的原因吗?当然,在不使用列表的情况下设置表格样式会更容易/更好。如果您迫切需要将它们包装起来,甚至可以使用 div 而不是列表。 IMO 列表应用于列出单个项目,而不是项目表。
-
是的,原因是我需要显示一个树,其中每个内部元素都有一个 html 表单,看起来像 this。是的,还有其他技术可以做到这一点,但我对未来的这方面很感兴趣。
标签: html css html-table html-lists margin