Web编程技术营地
研究、演示、创新

在SVG中引用变量

撰写时间:2026-01-02

修订时间:2026-01-04

JavaScript支持变量,CSS支持变量,本文考查在SVG引用变量的各种方式。

symbol

先定义symbol,然后使用use来引用symbol

CSS样式

这种方式,各浏览器支持力度不一样。Safari没任何问题,而Chrome不支持这种方式的变量引用,将报错属性值语法错误,导致cxcy的值均为0

JavaScript

从头构建SVG代码

let startPtX = 50; let startPtY = 100; let endPtX = 250; let endPtY = 100; let markerR = 5; let rx = 20; let ry = 10; let svgStr = ` <path d=" M ${startPtX} ${startPtY} A ${rx} ${ry}, 25, 1, 1 ${endPtX} ${endPtY} " fill="none" stroke="white" /> <line x1="${startPtX}" y1="${startPtY}" x2="${endPtX}" y2="${endPtY}" stroke="orange" stroke-width="1" /> <circle cx="${startPtX}" cy="${startPtY}" r="${markerR}" fill="red" stroke="white"; /> <circle cx="${endPtX}" cy="${endPtY}" r="${markerR}" fill="green" stroke="white"; /> `; pc.appendHTMLStr(svgStr);

因多行模板字符串支持变量的引用,因此这种方式非常高效,React即采用了这种方式的JSX变体。

在编写HTML代码时,凡是通过${...}的方式引用了变量的SVG标签名,都须将诸如<path ... />的方式改为&lt;path ... /&gt;的方式,否则浏览器将报错属性值语法错误。尽管上面的代码本身为字符串,但浏览器试图将它们解析为SVG元素。经转义后,浏览器不再试图解析,因此不再报错。

参考资源

  1. React
  2. Tutorial: Tic-Tac-Toe