SVG use元素
时间:2020-01-09 10:44:28 来源:igfitidea点击:
SVG的<use>元素可以从SVG文档的其他地方重用SVG形状,包括<g>元素和<symbol>元素。重用的形状可以在元素<defs>中定义(使该形状在使用前不可见)或者外部。
use示例
这是 <use>
元素的一个简单示例:
<svg> <defs> <g id="shape"> <rect x="50" y="50" width="50" height="50" /> <circle cx="50" cy="50" r="50" /> </g> </defs> <use xlink:href="#shape" x="50" y="50" /> <use xlink:href="#shape" x="200" y="50" /> </svg>
本示例显示了在<defs>元素内定义的<g>元素。除非由<use>元素引用,否则这将使<g>不可见。
在引用<g>元素之前,必须通过其id属性设置ID。 " <use>"元素通过其" xlink:href"属性引用" <g>"元素。注意属性值中ID前面的"#"。
" <use>"元素通过其" x"和" y"属性指定在何处显示重复使用的形状。请注意,元素<g>中的形状位于0,0。这样做是因为它们的位置已添加到 <use>
元素中指定的位置。
蓝点不是示例的一部分。它们被添加以显示两个<use>元素的x和y。
在defs元素外使用形状
只要<shape>具有唯一值的id属性, <use>
元素就可以在SVG图像中的任何位置重用元素。这是一个例子:
<svg width="500" height="110"> <g id="shape2"> <rect x="0" y="0" width="50" height="50" /> </g> <use xlink:href="#shape2" x="200" y="50" /> </svg>
这个例子定义了一个<g>元素,里面有一个<rect>元素。然后,它通过一个<use>元素重复使用<g>元素(包括嵌套的<rect>元素)。
请注意,同时显示了原始形状及其重用版本。之所以会发生这种情况,是因为未在 <defs>
元素或者 <symbol>
元素内定义重复使用的形状(元素<g>)。因此它是可见的。
再次,蓝点显示了<use>元素的坐标。
设置CSS样式
如果原始形状上没有设置CSS样式,则可以在重用形状时设置CSS样式。我们只需指定要在 <use>
元素的style
属性中设置的样式。这是一个例子:
<svg width="500" height="110"> <g id="shape3"> <rect x="0" y="0" width="50" height="50" /> </g> <use xlink:href="#shape3" x="100" y="50" style="fill: #00ff00;"/> <use xlink:href="#shape3" x="200" y="50" style="stroke: #00ff00; fill: none;"/> </svg>
注意原始形状上没有设置" style"属性。然后将使用默认样式(通常为黑色)进行渲染。