如何防止CSS背景颜色"出血"在我的SVG图像周围?

时间:2015-02-25 11:01:27

标签: html css svg

我有一个正常显示白色的SVG文件,或者当用户将鼠标悬停在其上时显示红色。这是通过具有图像的透明区域并使用以下CSS& HTML:

a>img{background:#fff;width:32px;height:32px}
a:hover>img{background:#900}

<a href="blah.html"><img src="blah.svg"></a>

问题是我偶尔会在图像周围看到非常薄的白色(或红色)边框。不同的浏览器/缩放级别/设备显示不同的边框 - 有时没有,有时是一些,有时是全部。

这似乎表明SVG文件并未完全“填充”img标记。

我可能会认为问题在于SVG不是很方形,所以它不能完美地扩展到32x32像素,但有时我会在所有四边都有边框,所以它不能那么简单。 (实际上SVG文件的视图框为“0 0 195 195”,并且似乎没有任何超出该范围的点。

值得注意的是,由于SVG的矢量特性,将尺寸更改为39x39像素(完美的除数为195)并不能解决问题,而不是我预期的问题。

小提琴:http://jsfiddle.net/3wtazst8/1/

有什么建议吗?

由于

1 个答案:

答案 0 :(得分:2)

我知道这已经有一年多了,但我遇到了同样的问题,并考虑了Paul LeBeau关于延伸到viewBox之外的建议。以下是显示问题和修复的示例。

have a paragraph on the technique

徽章图标不显示出血,而奖牌图标则显示。

Icons with background colors showing issue and showing fix

在Illustrator中查看左侧SVG,图像的背景将移至viewBox的最边缘。

在Illustrator中查看右边的SVG,图像的背景超出了viewBox的边缘。

修复SVG,使背景超出viewBox将解决您的问题。