这是问题的说明(已在Firefox和Chrome中测试):
<div style="background-color: red;"><svg height="100px" width="100" style="background-color: blue;"></svg></div>
请注意蓝色下方的额外red空间。divsvg
已经尝试将padding和margin两个元素都设置为0,但是没有运气。
这是问题的说明(已在Firefox和Chrome中测试):
<div style="background-color: red;"><svg height="100px" width="100" style="background-color: blue;"></svg></div>
请注意蓝色下方的额外red空间。divsvg
已经尝试将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在事先不知道高度时会变得棘手。