【发布时间】:2014-07-20 02:37:11
【问题描述】:
设置
关于 SVG 与图标字体的话题在网络上有很好的报道。但即使经过长时间的搜索,我也没有找到关于我的特殊情况的建议。
我有一个由 CMS 提供服务的网站。在一页上,我有包含多个图标的元素。这些元素在页面上重复。所以每个图标在页面上出现了很多次。现在我很难弄清楚如何最好地实现这些图标。
内嵌 SVG
总的来说,我完全看到了使用内联 SVG 的好处。这是最简单直接的,你可以用它做最多的事情。在我网站上其他不重复的地方,我已经使用它并且我喜欢它。
但是: 一遍又一遍地重复完全相同的 svg 标记似乎会不必要地炸毁文档。
引用的 SVG
我可以通过<img>、<object> 或<embed> 标签使用SVG。这样做会引用 SVG,因此只有唯一的数据会通过网络传输。
但是:除了不可能为 SVG 使用侧面 CSS 之类的事情之外,我还有几个额外的 HTTP 请求。
图标字体
我可以使用图标字体。仅引用了一个 HTTP 请求和内容。
但是: 标记错误,文件比 SVG 大。
SVG 精灵
我可以使用 SVG 精灵。只有一个 HTTP 请求和引用。
但是:这很复杂,感觉就像使用图标字体一样。另外,我的印象是 background-SVG 不是那么容易使用。
结论
要提出最佳解决方案,我认为以下问题是相关的:
- 与其他解决方案相比,重复 SVG 标记有那么糟糕吗?无论如何,这就是我对 HTML 标记所做的事情。一个 SVG-Icon 大约 30 行 / 1.6kB 的代码
- Networkwise:是几个小的 HTTP 请求(引用 SVG)还是一个大的(比小的组合更大,图标字体)请求更快?
- 与使用图标字体相比,使用 SVG 精灵有哪些真正的优势?我想它至少和图标字体一样多的 CSS 摆弄。
请注意:我使用 AJAX,所以只传输内容。图标字体将随着我网站的第一个请求加载(然后被缓存),引用的 SVG 将在第一次调用这个特殊页面时加载,然后被缓存。内联 SVG 将在每次调用此页面时传输,因为内容不会缓存在浏览器中。
我的感觉是图标字体或内联 SVG 最好。但我感谢这个主题的每一个贡献和方面。
【问题讨论】:
标签: html performance svg