SVG图像不是位图,所以(除非我漏掉了什么),你不能像其他用于网页的图像文件一样进行 spriting(请参见http://www.alistapart.com/articles/sprites)。
但是是否有一种等效机制来将 SVG 图像的一部分显示为 CSS 背景?
例如,想象一下语法:
div.my-special-svg-div {
background-image: url(sprite-image.svg#one-shape-in-the-svg-file);
}
SVG图像不是位图,所以(除非我漏掉了什么),你不能像其他用于网页的图像文件一样进行 spriting(请参见http://www.alistapart.com/articles/sprites)。
但是是否有一种等效机制来将 SVG 图像的一部分显示为 CSS 背景?
例如,想象一下语法:
div.my-special-svg-div {
background-image: url(sprite-image.svg#one-shape-in-the-svg-file);
}
<svg version="1.1"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="320"
height="240"
viewBox="0 0 320 240">
background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Crect%20fill%3D%22%23CCD%22%20%20width%3D%22100%25%22%20height%3D%22100%25%22%2F%3E%0A%20%20%3Crect%20fill%3D%22%23039%22%20width%3D%22100%25%22%20height%3D%22100%25%22%20rx%3D%221em%22%2F%3E%0A%3C%2Fsvg%3E);
(参见http://intertwingly.net/blog/2008/09/07/SVG-via-CSS)
所以,你的所有SVG图像最终都会出现在CSS文件中。gzip压缩应该可以很好地压缩一个CSS文件中的多个SVG文件。
据我所知,上面的CSS适用于Opera 9.5+、IE 9 beta、Safari 5和Chrome 6。截至Firefox 3.6或其他浏览器的早期版本似乎不起作用。
SVG技术甚至在W3C标准中都没有得到技术支持。在IE浏览器中,如果没有插件的话,它甚至无法正常工作。也许你会找到一些鲜为人知的Mozilla插件可以让你实现这个功能,但据我所知,你的代码将无法通过验证。