应用于 HTML 的图标 SVG code 的优化方法

问题

最近在做项目交互原型设计时尝试将在 Sketch App 中的图标 SVG 代码直接复制粘贴至 HTML 原型中,并通过设置 fill="currentColor"stoke="currentColor" 让图标能直接继承 active, hover, focus 等不同交互状态下的色彩,还可以直接通过 class 来定义图标的大小、空白等多种属性。相对引入图片文件,inline svg 能带来更好的网页加载性能,及更灵活的样式自定义。

然而,使用 Sketch App 右键菜单对 icon 图形 “Copy SVG Code” 后得到的代码”又臭又长”,既有换行锁进,又有版本号、title等非必要信息。稍微复杂的图形的代码更是一大块,粘贴进 HTML 后会影响 HTML 结构的可读性。你需要手动清理那些非必要的代码,修改预设的颜色定义方法,并将过长的 SVG 代码块收起。

解决方法之一

若是使用 Sketch App 等软件设计的图标,怎样才能得到干净快速可用的 SVG code 以嵌入 HTML 使用?

如果是 Mac 用户,可以下载 ImageOptim 这款开源的图片优化 App。你可能听说过 ImageOptim 能够压缩 .png, .jpg 等图片尺寸,但同时它也适用于 SVG 格式图片。

  1. 在 Sketch App 或其他桌面端图形软件里将相关 icon 图标单个或批量导出为 svg 格式
  2. 将导出的 .svg 文件拖入 ImageOptim.app 里,svg code 即刻得到优化。
  3. 将 .svg 文件在 IDE 中打开或使用 textEdit.app 打开,即可得到优化后的 svg 代码

因为是优化代码,所以 ImageOptim 优化 svg 格式文件的速度大大快于优化 .png 或 .jpg 格式的图标文件。

下图是 caret right icon 由 sketch 导出的 SVG code (图左) 和经过 ImageOptim 优化后的 SVG code(图右)的对比: Icon Shape SVG code before and after optimization

备选项

如果希望使用在线的 svg 优化工具,可以考虑使用 icomoon App
尚未试过 Figma Copy SVG code 的功能,只能猜测这款本就基于 Web 的图形设计 app 在导出 SVG code 时会有相比 Sketch 更佳的表现。 但有些项目就是受制于不方便用在线软件呀。

Connect

Keep updated with her latest updates on design, code and writing. Follow her on Twitter or GitHub.

关注她的思考、记录与分享

Subscribe to RSS

This website was designed and built by Millie with Bulma, Gatsby and Vercel.