【问题标题】:Space below a canvas in a table cell表格单元格中画布下方的空间
【发布时间】:2013-04-16 18:05:22
【问题描述】:

我有一个问题,表格单元格中高度为 100% 的图像或画布使该单元格增长。

这是整个页面:

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
  <table><tr><td id=t style="width:50px;height:50px;background:green;">
      <canvas id=c style="width:100%;height:100%;margin:0;padding:0"></canvas>
  </td></tr></table>
  <script>
    console.log($('#t').height());
  </script>
</body>
</html>

我希望在控制台中看到50,但它会记录55

This can be tested here.

此页面是a fiddle I had made on jsbin.com 的确切内容,小提琴记录了预期的50

有人可以解释一下到底有什么区别,更重要的是,如何确保我的单元格不会像它那样增长,所以它的高度就像它的内容一样是 50 像素,就像 jsbin 中的情况一样?

【问题讨论】:

  • “边距”只是从表格继承的边框间距,递归应用。现在,为什么这在 jsbin 中有所不同,而您的示例超出了我的范围。虽然“5px”也是一个神秘的数值……
  • 你是个可怕的人。
  • 我接受给出的第一个答案,因为它解决了问题,但任何解释(即解释 5px 的真实解释)都会受到尽可能多的支持。

标签: html css html-table


【解决方案1】:

添加你的画布样式

<canvas style="display:block"></canvas>

这只是因为画布的默认尺寸比预期的大。

【讨论】:

  • 它似乎有效。所以这里已经是+1了。但是你能在 jsbin.com 上更好地解释它为什么可以工作以及为什么没有它可以工作吗?
  • 请注意,它也适用于 td 元素上的这种显示样式。这还不清楚......
  • 为什么正好是 5px ?在我的一些测试中,使用我的特定 css,它是 4px ......这个“边距”来自哪里?
  • 问题不在于画布,而在于默认情况下具有display: table-cell 的容器。如果您将 TD 更改为块,或任何其他满足您需求的显示类型(除了表格单元格),它将不会应用神秘的填充/边距。我已经对此进行了测试并检查了所有元素的废话,我确信情况就是这样;但是查看规格,没有理由添加此空间,并且不会影响其他表格显示类型(例如,请参见表格行)。 You can see it failing here as well but with a div
猜你喜欢
  • 1970-01-01
  • 2015-03-01
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多