我知道如何让SVG图标装上我的网站,但我想不通的是如何满足所有的下列限制:如何在避免FOMI的同时在外部CDN上缓存SVG图标?
- 能够使用SVG图标CSS
- 的无闪光缺少的图标(FOMI)
- 最小的初始页面大小
- 缓存SVGs
- 能够使用CDN
- 必须能够使用
fill: currentColor
,使图标匹配当前TEX吨颜色,就像图标的字体 - 加成:Pixel-align the SVGs所以它们总是看起来尖锐
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 issue之前使用CDN。
我们可以patch in支持外部域,但我敢肯定,这不会为CSS工作,因为它只监视DOM(对不起,尚未测试),并且它也会导致您的浏览器做出一大堆失败的请求到它无法获取的文件(页面上的每个图标都有一个)。
我们可以使用CDN,而不是内联整个SVG(增加页面大小,无缓存),或者我们AJAX它(导致FOMI)。
那么,有什么解决方案可以满足所有约束吗?
基本上我希望SVG像图标字体一样方便或者没有切换点。 SVG支持多种颜色,并且更易于访问,但我无法让它们看起来很好,或者有效地加载。
你可以把你的SVGs成一个图标字体http://fontello.com/ –
@HolgerWill没错。我目前正在使用图标字体w/icomoon,但是每个人都在说SVG现在都是风靡一时,我正试图弄清楚它们究竟有多好。他们支持多种颜色,当然,但[它们看起来并不脆](http://stackoverflow.com/q/42081449/65387),并且它们不适用于CDN,所以现在SVG看起来像它们吸。由于[FontCustom](https://github.com/FontCustom/fontcustom/issues/321)似乎已经死亡,所以使用webpack构建起来更容易一些。 – mpen
我猜聚合物做了什么...把你的图标放在一个html文件中,并使用html-includes与自定义元素结合,也许 –