我的公共文件夹中有一堆不同的 SVG 文件。这些 svg 使用image-mask: url(/icon.svg)属性显示。
如果我只有一个 svg 但我有 20 个不同的图标,这很好。有没有办法将它组合成普通 JPG 图像的精灵?
谢谢!
您可以查看的一种性能方法是将SVG作为Data URI添加到 CSS 样式表中。
这有一个缺点:
但有以下两个优点:
这几乎肯定会给您带来显着的性能提升。
让我们来看看这可能是如何工作的。
这是一个五角星的SVG:
<svg xmlns="http://www.w3.org/2000/svg" width="260" height="245">
<path transform="scale(0.75)" d="m55, 237 74-228 74, 228L9, 96h240" />
</svg>
Run Code Online (Sandbox Code Playgroud)
而这里的同一个SVG作为数据URI:
data:image/svg+xml,%3Csvg%20xmlns="http://www.w3.org/2000/svg"%20width="260"%20height="245"%3E%3Cpath%20transform="scale(0.75)"%20d="m55,237%2074-228%2074,228L9,96h240"%20/%3E%3C/svg%3E
Run Code Online (Sandbox Code Playgroud)
可以看到在data:image/svg+xml,前缀之后,Data URI SVG几乎完全相同,除了:
<&>已替换为%3C&%3E百分比代码最后,这是在下面的 CSS 中运行的Data URI SVG ...
工作示例:
<svg xmlns="http://www.w3.org/2000/svg" width="260" height="245">
<path transform="scale(0.75)" d="m55, 237 74-228 74, 228L9, 96h240" />
</svg>
Run Code Online (Sandbox Code Playgroud)
data:image/svg+xml,%3Csvg%20xmlns="http://www.w3.org/2000/svg"%20width="260"%20height="245"%3E%3Cpath%20transform="scale(0.75)"%20d="m55,237%2074-228%2074,228L9,96h240"%20/%3E%3C/svg%3E
Run Code Online (Sandbox Code Playgroud)