如何摆脱div元素中svg下面的额外空间

Dan*_*iel 73 html css svg

以下是该问题的说明(在Firefox和Chrome中测试):

<div style="background-color: red;"><svg height="100px" width="100" style="background-color: blue;"></svg></div>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/EXLSF/

注意蓝色下方的额外red空间.divsvg

已经尝试过设置paddingmargin两个元素0,但没有运气.

And*_*ndy 136

你需要display: block;你的svg.

<svg style="display: block;"></svg>
Run Code Online (Sandbox Code Playgroud)

这是因为内联块元素(如<svg><img>)位于文​​本基线上.你看到的额外空间是容纳角色下降器的空间('y','g'等尾部).

您也可以使用,vertical-align:top如果您需要保留它inlineinline-block

  • 解释是 `inline-block` 元素(如 `&lt;svg&gt;` 和 `&lt;img&gt;`)位于文本基线上。您看到的额外空间是用于容纳字符降序的空间('y'、'g' 等的尾部)。 (2认同)
  • 我更喜欢 `vertical-align:top` (2认同)

Hir*_*ral 10

svg是一个inline元素.inline元素留下白色空间.

解:

添加display:blocksvg或使父div的高度相同svg.

DEMO在这里.


Ang*_*cas 7

另一种选择是添加font-size: 0到 svg 父级。


Mal*_*chi 5

display将svg 的属性更改为block.