# 图标方案
图标多为网站随处可见,起修饰作用的图片。
常见的解决方案有css splite、iconfont、svg
# css splite(雪碧图)
雪碧图(CSS Sprite)又叫CSS精灵图,是一种网页图片应用处理方式,他允许你将一个页面设计到所有零星图片都包含到一张大图中去,这样一来,当访问该页面时,由从前的多次请求变为一次请求,客户端显示一张图片都会向服务器发送请求,所以图片请求越多,造成延迟的可能性就越大。雪碧图就是为了解决这个问题诞生的
# 优点
- 减少http请求
- 提前加载好需要用到的图片
- 可以展示任意图像
- 合成后的图片总体大小要小于多个图片和的大小
# 缺点
- 图标过多时,加载缓慢
- 维护成本高
- 开发效率低
# iconfont
顾名思义,IconFont 就是字体图标。严格地说,就是一种字体,但是,它们不包含字母或数字,而是包含符号和字形。您可以使用 CSS 设置样式,就像设置常规文本一样,这使得 IconFont 成为 Web 开发时图标的热门选择。
# 优点
- 可以方便地将任何 CSS 效果应用于它们。
- 因为iconfont的本质是字体,所以我们可以自由的变换大小和颜色。
- 我们只需要发送一个或少量 HTTP 请求来加载它们,而不是像图片,可能需要多个 HTTP 请求。
- 由于尺寸小,它们加载速度快。
- 它们在所有浏览器中都得到支持(甚至支持到 IE6)
# 缺点
- 不能用来显示复杂图像
- 作为字体文件,容易受编译影响,出现乱码
- 通常只限于一种颜色,除非应用一些 CSS 技巧
- 字体图标通常是根据特定的网格设计的,例如 16x16, 32×32, 48×48等。如果由于某种原因将网格系统改为25×25,可能不会得到清晰的结果
- 维护成本高
# svg
# 优点
- 矢量图,任意缩放不失真
- 支持多色图标
- 对seo和无障碍功能友好
- 能够在代码或文本编辑器中创建简单的SVG渲染
- 格式具有高度可压缩性和轻量级
- 支持透明度
- 允许静止或动态图像
# 劣势
- IE浏览器支持不好
# 总结
- 针对单色图标,使用iconfont。多色图标使用svg
- 需要适配IE9以下的,使用iconfont
- 图标数量较多,使用svg
- 需要无损图标,优先考虑svg
- 条件允许的,优先考虑svg