SVG的和通过“定义一次、多次引用”实现图形复用,不复制数据仅复用渲染指令;存放带id的可复用元素,通过href引用并支持定位缩放;推荐用+构建图标系统,更规范可控。
和
SVG 的 和 是实现图形复用的核心机制,本质是“定义一次,多次引用”,不复制实际图形数据,只复用渲染指令,节省代码体积且便于统一维护。
标签本身不渲染任何内容,它只是容器,用来存放你打算重复使用的图形元素,比如 、、 或自定义符号()。这些元素必须有唯一 id,后续才能被引用。
例如:
svg width="200" height="100"> 通过 xlink:href(旧标准)或 href(现代标准)指向 中某个 id,把该图形“画出来”。你可以自由设置位置(x、y)、缩放(配合 transform)、颜色(部分属性可继承或覆盖)等。
注意: 引用的是“定义”,不是副本 —— 修改 中原始图形,所有 实例会同步更新。
例如(接上例):
对于图标类复用,更规范的做法是用 包裹图形,并设 viewBox。它天然支持独立坐标系和尺寸控制,避免手动计算偏移。
必须放在 或 根下,不能直接渲染 引用 时,可用 width/height 缩放,x/y 定位,且不受原始 viewBox 影响,再用
href 值必须带 #,如 href="#dot";写成 href="dot" 会失效href="icons.svg#dot"(需同源且浏览器支持) 无法直接修改内部子元素样式(如改 的 stroke),但可通过 CSS 类、CSS 变量或 fill/stroke 属性继承来间接控制href,需回退用 xlink:href(兼容写法:xlink:href="#dot" href="#dot")基本上就这些。合理组织 和 ,能让 SVG 更轻量、更易维护,尤其适合图标库、数据图表中的重复元素。