g元素是分组元素,用于在逻辑上将相关的元素进行分组。给g元素添加的样式或者属性都会被应用到它所有的子元素上。如下示例所示,想对三个圆进行移动,可以直接在g上进行操作,这样既达到了移动的目的,也没有破坏他们之间的位置关系。
<svg width='100%' height='100'>
<g transform='translate(50,50)'>
<circle cx='10' cy='10' r='5' />
<circle cx='30' cy='10' r='5' />
<circle cx='50' cy='10' r='5' />
</g>
</svg>
这两个标签可以用在g元素中使用,添加一些描述性的信息,使其更容易被屏幕阅读器解读,让代码的整体可读性更好。
该元素可以实现元素的重用,可以重用单个元素,也可以重用一组元素。use元素复制出的副本的样式和初始元素一样,不能覆盖初始元素的样式。其上的属性如下:
示例如下:
<svg>
<g id='circles' transform='translate(100,100)'>
<circle cx='10' cy='10' r='5' />
<circle cx='30' cy='10' r='5' />
<circle cx='50' cy='10' r='5' />
</g>
<use x='10' y='10' xlink:href='#circles' />
</svg>
该元素可以存储我们想重用的元素,但是不渲染它们,等到后面再被其他SVG元素应用或显示。defs元素的副本的x和y是相对于用户坐标系统来定位的。其副本可以用use元素来创建。示例如下:
<svg>
<defs>
<linearGradient id="gradient">
<stop offset="0%" style="stop-color: deepPink"></stop>
<stop offset="100%" style="stop-color: #009966"></stop>
</linearGradient>
</defs>
<rect stroke="#eee" stroke-width="5" fill="url(#gradient)"></rect>
</svg>
该元素和g元素相似,它提供了一种对元素进行分组的方式。该元素不会被渲染,同时它可以有自己的viewBox和preserveAspectRatio属性。