我一定做错了什么。图像作为SVG从Illustrator导出(我不确定这是否相关)它确实有一些像素数据。 这是我的JSFiddle示例。
请注意,直接转到图像,它显示正常: http://ykcreations.com/tv.svg
编辑:这在Chrome或Safari中不起作用,但在Firefox中起作用。 Webkit问题?
我一定做错了什么。图像作为SVG从Illustrator导出(我不确定这是否相关)它确实有一些像素数据。 这是我的JSFiddle示例。
请注意,直接转到图像,它显示正常: http://ykcreations.com/tv.svg
编辑:这在Chrome或Safari中不起作用,但在Firefox中起作用。 Webkit问题?
您的源SVG存在问题。看到这个更新的小提琴指向 一个不同的SVG文件 工作正常: http://jsfiddle.net/wdW2K/2/
.tv {
background: url("http://phrogz.net/svg/800x800.svg");
width: 400px; height: 400px;
}
编辑:具体来说,问题 出现 是WebKit不支持 <image>
在用作背景的SVG中。最低限度地修改您的文件以更改 <image>
引用本地(非数据-uri)文件,并添加一个 <circle/>
,我可以直接在Chrome中查看SVG时看到图像和圆圈,但是当用作背景图像时,只能看到圆圈。
这个bug 味道相关。
它与您的图像有关,请尝试将以下内容插入您的图像中 CSS
:
.tv
{
background-image: url("http://croczilla.com/bits_and_pieces/svg/samples/butterfly/butterfly.svg");
width: 400px;
height: 400px;
}
也许是你的 SVG
实际上是一个 SVGZ
? SVGZ
文件是压缩版本 SVG
文件。通常你必须配置你的服务器来处理它,但FF可能只能处理压缩版本。
编辑 请参阅下面的Phrogz答案(可能在您阅读本文时的上方);它涵盖了这一点并提供了更好的解释。
另一个可能的原因是使用错误的MIME类型为SVG提供服务。将其设置为'image / svg + xml'可能会解决问题。
在Rails中,可以通过在config / intializers / mime_types.rb中添加以下内容来完成:
Mime::Type.register 'image/svg+xml', :svg
我在Chrome中将svg渲染为背景图像时出现了类似的问题,但在Firefox中一切都很好。我发现从我导出的svg文件中存在语法错误:
错误的xlink属性:
xlink:href="data:img/png;base64
正确的xlink属性:
xlink:href="data:image/png;base64
文章如下: