【问题标题】:Why is the containing div for svg taking more space [duplicate]为什么包含 svg 的 div 占用更多空间 [重复]
【发布时间】:2017-02-04 14:16:12
【问题描述】:

这段简单的html:

<div style="background:blue">
  <svg width="40" height="40" style="background:red"></svg> some text
</div>

您可以看到 svg 为 40px 但周围的 div 为 44px 高(在 chrome 上测试)。

为什么。以及如何使周围的 div 尊重 SVG 的大小,而无需在周围的 div 上明确地 height 并将布局 svg+text 保持在一行中?

【问题讨论】:

    标签: html css svg


    【解决方案1】:

    这里的svg 元素有display: inline,因此被视为文本。因此,它还观察line-height 属性,该属性控制每行获得多少额外的垂直空间。出于可读性的原因,我们不会将行直接拼凑在一起。

    svg 上切换到display: block 会使div 完全匹配,就像在div 上设置line-height: 0 一样。

    【讨论】:

    • 我想要 svg 上的 display: inline-block,因为不希望它换行
    • 您将 SVG 嵌套在 div 中。它不会比 div 已经破坏的文本更糟糕(这是一个块)。但是,如前所述,您有两个选择。哎呀,您甚至可以通过将其设置为 display: table-cell 来适应 div 的宽度。
    • 在我的用例中是 div &gt; (svg+text) 所以我需要 svg 不是 display: block
    • 在您的问题中包含该事实会有所帮助,您不觉得吗? 仍然,您也可以在 div 上设置line-height,如上所述。
    • display: block 解决了这个问题,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2013-12-03
    • 2013-01-01
    • 2016-12-26
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    相关资源
    最近更新 更多