这是问题的说明(已在Firefox和Chrome中测试):
<div style="background-color: red;"><svg height="100px" width="100" style="background-color: blue;"></svg></div>
请注意蓝色下方的额外red
空间。div
svg
已经尝试将padding
和margin
两个元素都设置为0
,但是没有运气。
这是问题的说明(已在Firefox和Chrome中测试):
<div style="background-color: red;"><svg height="100px" width="100" style="background-color: blue;"></svg></div>
请注意蓝色下方的额外red
空间。div
svg
已经尝试将padding
和margin
两个元素都设置为0
,但是没有运气。
Answers:
您需要display: block;
自己的svg
。
<svg style="display: block;"></svg>
这是因为内联块元素(如<svg>
和<img>
)位于文本基线上。您看到的多余空间是留给字符降序使用的空间(“ y”,“ g”等的尾部)。
您也可以使用vertical-align:top
,如果你需要保持inline
或inline-block
inline-block
元素(如<svg>
和<img>
)位于文本基线上。您看到的多余空间是留给字符降序使用的空间(“ y”,“ g”等的尾部)。
vertical-align:top
line-height
,但是line-height: 0
在svg和/或其容器上进行设置没有任何区别。只display: block
解决了。如果您碰巧要在大型SVG上工作,这是一个陷阱,因为您永远不会认为它是内联的。但是,如果您有一个小图标,这是有道理的。
display: block
我没有工作,但vertical-align
没有
另一种替代方法是添加font-size: 0
到svg parent
。
尝试添加height:100px
到div
并使用height="100%"
on svg
:
<div style="background-color:red;height:100px">
<svg height="100%" width="100" style="background-color:blue;"></svg>
</div>
svg
在事先不知道高度时会变得棘手。