在SVG中,你可以通过使用 <defs>
和 <use>
元素来复用文本,并通过JavaScript动态改变其内容。以下是一个简单的示例,展示了如何实现这一点:
首先,在 <defs>
元素中定义一个文本元素,并为其指定一个唯一的 id
。
<svg width="500" height="200">
<defs>
<text id="reusableText" x="10" y="20" font-family="Arial" font-size="16" fill="black">Default Text</text>
</defs>
</svg>
使用 <use>
元素来复用定义的文本。你可以通过 xlink:href
属性引用之前定义的文本。
<svg width="500" height="200">
<defs>
<text id="reusableText" x="10" y="20" font-family="Arial" font-size="16" fill="black">Default Text</text>
</defs>
<use xlink:href="#reusableText" x="50" y="50" />
</svg>
通过JavaScript,你可以动态改变文本内容。首先,给 <use>
元素一个 id
,然后使用JavaScript来修改文本内容。
<svg width="500" height="200">
<defs>
<text id="reusableText" x="10" y="20" font-family="Arial" font-size="16" fill="black">Default Text</text>
</defs>
<use id="usedText" xlink:href="#reusableText" x="50" y="50" />
</svg>
<script>
// 获取<use>元素
const usedText = document.getElementById('usedText');
// 获取<text>元素的引用
const reusableText = document.getElementById('reusableText');
// 动态改变文本内容
reusableText.textContent = 'New Text Content';
</script>
如果你有多个复用的文本实例,并且想要分别控制它们的内容,你可以为每个 <use>
元素指定不同的 id
,并在JavaScript中分别处理。
<svg width="500" height="200">
<defs>
<text id="reusableText" x="10" y="20" font-family="Arial" font-size="16" fill="black">Default Text</text>
</defs>
<use id="usedText1" xlink:href="#reusableText" x="50" y="50" />
<use id="usedText2" xlink:href="#reusableText" x="50" y="100" />
</svg>
<script>
// 获取<use>元素
const usedText1 = document.getElementById('usedText1');
const usedText2 = document.getElementById('usedText2');
// 获取<text>元素的引用
const reusableText = document.getElementById('reusableText');
// 动态改变第一个复用的文本内容
reusableText.textContent = 'First Text Content';
// 动态改变第二个复用的文本内容
reusableText.textContent = 'Second Text Content';
</script>
<use>
元素复用的内容是不可见的,因此你需要通过JavaScript来修改原始 <text>
元素的内容。<text>
元素,并为每个 <text>
元素指定不同的 id
。通过这种方式,你可以在SVG中复用文本,并动态地改变其内容。