我知道如何在我的网站上加载SVG图标,但我无法弄清以下所有约束条件的满足方法:
- 能够在CSS中使用SVG图标
- 没有缺失图标的闪烁现象 (FOMI)
- 初始页面尺寸最小化
- 缓存SVGs
- 能够使用CDN
- 必须能够使用
fill: currentColor
来使图标与当前文本颜色匹配,就像图标字体一样 - 奖励: 对SVG进行像素对齐以使它们始终清晰锐利
通过使用外部雪碧图,可以满足1、2、3和4:
<svg viewBox="0 0 100 100">
<use xmlns:xlink="http://www.w3.org/1999/xlink"
xlink:href="/assets/sprite-4faa5ef477.svg#icon-asterisk-50af6"></use>
</svg>
但在浏览器修复CORS问题之前,我们无法使用CDN。
我们可以添加对外部域的支持,但我很确定这对于CSS不起作用,因为它只监视DOM(抱歉,还没有测试),而且它会导致您的浏览器制作大量无法获取文件的失败请求(每个页面上的图标都是一个请求)。
如果我们内联整个SVG(增加页面大小,无缓存),或者使用AJAX加载它(导致FOMI),那么我们可以使用CDN。
那么,有没有满足所有57个约束条件的解决方案呢?
基本上,我希望SVG图像与图标字体一样方便,否则就没有切换的意义。 SVG支持多种颜色,并且更易于访问,但我无法使它们看起来好看,并且加载效率也不高。