📅  最后修改于: 2023-12-03 15:20:24.145000             🧑  作者: Mango
SVG (Scalable Vector Graphics) 是一种基于 XML 的图形格式,使用矢量图形描述,因此其图像可以无限放大而不会引起图像失真。而 SVG 图标则是采用 SVG 格式制作的图标,与传统的 PNG、JPEG 等栅格图标相比,SVG 图标具有以下优点:
下面介绍几种常见的 SVG 图标制作的方式和工具。
使用纯手写代码制作 SVG 图标是最原始的方式,需要对 SVG 路径和形状的绘制方法有一定的了解,具体语法可以参照 MDN 文档。
以一个简单的扫帚图标为例:
<svg viewBox="0 0 24 24" width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M10.45,1.44l-.6,4.48a.42.42,0,0,0,.41.47H12.1c.14,1.06,1,1.86,2,1.86s1.88-.8,2-1.86h1.84a.42.42,0,0,0,.41-.47l-.6-4.48A1,1,0,0,0,17,0H7a1,1,0,0,0-.55,1.44ZM11.66,13.52l-3.95,3.94L2.11,12.29a1,1,0,0,0-.71-.29,1,1,0,0,0-.71.29l-.26.26a1,1,0,0,0,0,1.41l6.15,6.15a1,1,0,0,0,1.41,0l13-13a1,1,0,0,0,0-1.41L18.85,2.11a1,1,0,0,0-1.41,0L11.92,9.38,10.56,8A1,1,0,0,0,9.34,8.05l-1.78,2.64a.5.5,0,0,0,.42.76h5.53A.5.5,0,0,1,13.1,12a.5.5,0,0,1-.5.5H8.42a.51.51,0,0,0-.42.23,1,1,0,0,1-1.6,0l-1.78-2.64a1,1,0,0,0-.83-.43H.5a.49.49,0,0,0-.5.5.5.5,0,0,0,.5.5H1.64C2.32,12,3,12.54,3.49,13.3s.79,1.88,1.56,2.27a3.25,3.25,0,0,0,2.8,0,3.06,3.06,0,0,0,.84-.55c.77-.39,1.08-1.09,1.07-1.92L11.37,8.56Z"/>
</svg>
其中 viewBox
属性表示 SVG 视口的尺寸,详见 MDN 文档。
使用图形编辑软件(如 Adobe Illustrator)可以更方便地制作 SVG 图标,可以直观地进行路径和形状的编辑和调整。
以同样的扫帚图标为例:
在导出 SVG 时需要注意以下几点:
除了手写代码和图形编辑软件外,还可以使用一些在线 SVG 图标制作工具,例如:
这些工具能够快速制作简单的 SVG 图标,并且具有丰富的预设形状和图标库,也支持导入其他图形格式的图标进行编辑。
例如,使用 iconsvg.xyz 制作一个文件夹图标:
导出的 SVG 代码片段如下:
<svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 3L14 3C14.5304 3 14.9208 3.42085 14.9933 3.93934L15 4L15 5H19C19.5304 5 19.9208 5.42085 19.9933 5.93934L20 6V18C20 19.1046 19.1046 20 18 20H6C4.89543 20 4 19.1046 4 18V6C4 4.89543 4.89543 4 6 4H10L10 3L12 3ZM14 5L10 5L10 6L12 6C12.5523 6 13 6.44772 13 7C13 7.55228 12.5523 8 12 8L8 8C7.44772 8 7 7.55228 7 7C7 6.44772 7.44772 6 8 6L9 6L9 5H5V18C5 18.5523 5.44772 19 6 19H18C18.5523 19 19 18.5523 19 18V6L15 6C14.4477 6 14 5.55228 14 5Z"/>
</svg>
如果需要使用一些常见的 SVG 图标,可以使用以下一些优质的 SVG 图标库:
这些图标库都有大量的高质量 SVG 图标可供选择,可以极大地提高开发效率。
本篇介绍了 SVG 图标的定义、特点、制作方式和常用的 SVG 图标库。在实际开发中,SVG 图标能够给用户带来更好的视觉效果和体验,也方便了开发人员进行图标的编辑和分配。建议开发人员在实际项目中尽可能地采用 SVG 图标。