【问题标题】:Div containing canvas have got a strange bottom margin of 5px包含画布的 div 有一个奇怪的下边距 5px
【发布时间】:2013-03-26 07:52:36
【问题描述】:

我遇到了一个奇怪的问题。

简而言之:

当我们将画布放入 div 并设置画布的大小时,div 会自动比画布大 5px,而我希望它得到完全相同的大小。

这个问题是this answer的关注者 所以我将采用相同的示例,该问题已在 Firefox 和 google chrome 中重现。 (其他浏览器没试过)

<div>
    <canvas height="300px" width="200px"></canvas>
</div>

CSS:

div {
    border: 2px solid blue; /* demo purposes */
    display: inline-block;
}
canvas {
    background-color: khaki; /* demo purposes */
}

结果(查看 div 中的空白):

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

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

【问题讨论】:

    标签: html canvas


    【解决方案1】:

    您可以通过在画布元素的 css 中添加 display: block 来防止它发生。

    即:

    canvas {
        background-color: khaki; /* demo purposes */
        display: block;
    }
    

    【讨论】:

    • 谢谢,但我想了解更多,如果我不将显示设置为阻止,默认显示值是多少,为什么它会在画布下留出空白空间?
    • 由于内联格式模型,会出现空格。这是一个复杂的主题,我自己并不完全理解,但你可以阅读它herehere
    • +1,你当然是对的!底部的空间是正在渲染的实际空白。如果你set the line-height to 0,空格也会消失。
    • @Jeroen 哪个空格,如果我们有&lt;div&gt;&lt;canvas&gt;&lt;/canvas&gt;&lt;/div&gt;
    • 有趣!所以我猜我在 2013 年错了,或者不够精确,因为即使标签直接相互跟随,似乎插入了一行文本。我认为它一行文字,如果你去* { font-size: 100px; },空白确实会增长。 - 不知道到底发生了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 2010-10-14
    • 2018-06-15
    • 2011-10-11
    • 2011-04-29
    相关资源
    最近更新 更多