2016-09-27 75 views
6

這一件簡單的html:爲什麼在SVG包含div採取更多的空間

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

您可以看到SVG是40px但周圍的div是44px高(測試鉻)。

爲什麼。以及如何使周圍的div尊重SVG的大小,而沒有明確的height對周圍的div和保持佈局svg+text在一個單一的線?

回答

3

這裏的svg元素有display: inline,因此被視爲文本。因此,它還觀察控制每條線獲得多少額外垂直空間的屬性line-height。出於可讀性的原因,我們不會直接將線條粘合在一起。

切換到display: blocksvg使得div完全適合,因爲它在div設置line-height: 0

+0

我想在svg上顯示:inline-block,因爲不想讓它換行 – basarat

+0

你在一個div中嵌套一個SVG。它不會破壞文本比div已經做的更糟糕(這是一個塊)。但是,如前所述,您有兩種選擇。哎呀,你甚至可以通過將其設置爲'display:table-cell'來適應div的寬度。 – Joey

+0

在我的使用情況下,它的'div>(svg + text)'所以我需要svg不是'display:block' – basarat