包含画布的Div有5px的奇怪底部边距

Gui*_*ian 12 html canvas

我面临一个奇怪的问题.

简而言之 :

当我们在div中放置一个画布并设置画布的大小时,div自动比画布大5px,而我希望它得到完全相同的大小.

这个问题是这个答案的后续问题 所以我将采用相同的例子,这个问题已经在firefox和google chrome中重现了.(没试过其他浏览器)

<div>
    <canvas height="300px" width="200px"></canvas>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

div {
    border: 2px solid blue; /* demo purposes */
    display: inline-block;
}
canvas {
    background-color: khaki; /* demo purposes */
}
Run Code Online (Sandbox Code Playgroud)

结果(参见div中的空白区域):

结果

你也可以在这个JSfiddle中看到这个完全相同的例子(非常简单)

为什么会发生这种情况,我们如何防止它?

Mat*_*ain 22

您可以通过添加display: blockcanvas元素的css 来防止它发生.

即:

canvas {
    background-color: khaki; /* demo purposes */
    display: block;
}
Run Code Online (Sandbox Code Playgroud)

  • +1,你当然是对的!底部的空间是呈现的实际空白.如果你[将'line-height`设置为0](http://jsfiddle.net/kpdgQ/),空间也会消失. (8认同)
  • 由于内联格式化模型,空间显示.这是一个复杂的主题,我不完全了解自己,但你可以阅读[这里](http://reference.sitepoint.com/css/inlineformatting)和[here](http://meyerweb.com/埃里克/ CSS /直列format.html). (3认同)
  • 谢谢,但我想了解更多信息,如果我不将显示设置为阻止,默认显示值是多少,为什么它会在画布下留出空白空间? (2认同)
  • @Jeroen 如果我们有 `&lt;div&gt;&lt;canvas&gt;&lt;/canvas&gt;&lt;/div&gt;` ,哪个空格? (2认同)