html - LI 元素内的奇怪 TABLE 边距行为

标签 html css html-table html-lists margin

当表格位于 LI 元素内时,我发现表格的边距行为非常奇怪。在 LI 内部,TABLE 在顶部有额外的边距,不能通过使用“边距”或“填充”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>

这在谷歌浏览器中呈现为:

screenshot #1

我希望:

screenshot #2

我真的不明白为什么会出现这种 margin ? LI本身没有任何paddings,TABLE没有任何margins,但是合在一起...

更新。此边距仅出现在 Google Chrome (24.0.1312.68) 中。在 Mozilla Firefox (18.0.2) 中没有边距,页面看起来符合预期(屏幕截图 #2)。

最佳答案

虽然我认为更好的实现方式是在 li 标签内使用 float div 来容纳您的表单,但解决您在 HTML 设置中看到的间距问题的方法是添加一个 display: inline-table 样式到 table 标签。 (下面复制的代码;请注意,我将 CSS 移到了标题中,而不是内嵌在标签中。)

请注意:IE 7 及以下版本完全不支持 inline-table 属性,您需要注意 IE 8 中的文档类型。这在 FF、Chrome 和 IE 中应该可以正常工作9.

参见:http://www.w3schools.com/cssref/pr_class_display.asp

 <!DOCTYPE html>
    <html>
      <head>
          <title>Strange table margin behaviour</title>
          <style type="text/css">
            li { border: 1px solid #000099; margin: 0; padding: 0; }
            table { border: 1px solid #ccc; display: inline-table; margin: 0; padding: 0; }
          </style>
      </head>
      <body>
        <ul>
          <li><table><tr><td>test</td></tr></table></li>
          <li><table><tr><td>test</td></tr></table></li>
          <li><table><tr><td>test</td></tr></table></li>
        </ul>
      </body>
    </html>

关于html - LI 元素内的奇怪 TABLE 边距行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14867595/

相关文章:

html - 如何让 List 组件填充 ScrollContainer 组件?

css - 无法定位首页边距

jquery - 如何在 CSS 选择器或 jQuery 中处理 XML 命名空间?

jquery - 使用 jQuery 从 AJAX 响应(json)构建表格行

css - td 的边框未显示在自动换行中断词上

php - html5 &lt;input type ="file"accept ="image/*"capture ="camera"> display as image 而不是 "choose file"button

html - flexbox 容器中的水平和垂直对齐方式?

html - 将文本与图标中间的新行对齐

css - 如何使用 div 和 css 模拟表格?

forms - 加载到表单中的 HTML5 地理定位数据发送到数据库