<symbol>

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

<symbol> SVG 元素用于定义图形模板对象,这些对象可以由 <use> 元素进行实例化。

使用 <symbol> 元素处理在同一文档中多次使用的图形,可以增加结构和语义。富含结构性的文档可以通过图形、语音或盲文进行渲染,从而提高可访问性。

注意: <symbol> 元素本身不用于渲染。只有 <symbol> 元素的实例(即通过 <use> 元素对 <symbol> 的引用)才会被渲染。这意味着,即使 CSS 的 display 属性指示了其他内容,某些浏览器也可能拒绝直接显示 <symbol> 元素。

使用语境

分类容器元素,结构元素
允许内容可包含任意数量、任意顺序的下列元素
动画元素
描述性元素
形状元素
结构元素
渐变元素
<a>, <clipPath>, <filter>, <foreignObject>, <image>, <marker>, <mask>, <pattern>, <script>, <style>, <switch>, <text>, <view>

属性

height

此属性确定 symbol 的高度。值类型<length> | <percentage>默认值auto可动画

保持长宽比

此属性定义了当 SVG 片段嵌入到具有不同 纵横比 的容器中时,SVG 片段必须如何变形。值类型:(none | xMinYMin | xMidYMin | xMaxYMin | xMinYMid | xMidYMid | xMaxYMid | xMinYMax | xMidYMax | xMaxYMax)(meet | slice)?; 默认值xMidYMid meet可动画

refX

此属性确定 symbol 的参考点的 x 坐标。值类型<length> | <percentage> | left | center | right默认值:无;可动画

refY

此属性确定 symbol 的参考点的 y 坐标。值类型<length> | <percentage> | top | center | bottom默认值:无;可动画

视图框

此属性定义了当前 symbol 的 SVG 视口的边界。值类型<list-of-numbers>默认值:无;可动画

width

此属性确定 symbol 的宽度。值类型<length> | <percentage>默认值auto可动画

x

此属性确定 symbol 的 x 坐标。值类型<length> | <percentage>默认值0可动画

y

此属性确定 symbol 的 y 坐标。值类型<length> | <percentage>默认值0可动画

DOM 接口

此元素实现了 SVGSymbolElement 接口。

示例

html
<svg viewBox="0 0 80 20" xmlns="http://www.w3.org/2000/svg">
  <!-- Our symbol in its own coordinate system -->
  <symbol id="myDot" width="10" height="10" viewBox="0 0 2 2">
    <circle cx="1" cy="1" r="1" />
  </symbol>

  <!-- A grid to materialize our symbol positioning -->
  <path
    d="M0,10 h80 M10,0 v20 M25,0 v20 M40,0 v20 M55,0 v20 M70,0 v20"
    fill="none"
    stroke="pink" />

  <!-- All instances of our symbol -->
  <use href="#myDot" x="5" y="5" opacity="1.0" />
  <use href="#myDot" x="20" y="5" opacity="0.8" />
  <use href="#myDot" x="35" y="5" opacity="0.6" />
  <use href="#myDot" x="50" y="5" opacity="0.4" />
  <use href="#myDot" x="65" y="5" opacity="0.2" />
</svg>

规范

规范
Scalable Vector Graphics (SVG) 2
# SymbolElement

浏览器兼容性