【发布时间】:2017-12-03 22:53:26
【问题描述】:
我想将 svg-mask 分配给 svg-image。我可以使用面具上的 id 来完成这项工作,如下所示:
<svg id="svg1" width="5cm" height="5cm" viewBox="0 0 200 200"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<mask id="mask">
<circle cx="100" cy="100" r="100" fill="white"></circle>
</mask>
</defs>
<rect x="0" y="0" width="200" height="200" fill="red" mask="url(#mask)"></rect>
</svg>
但是我想多次加载这个 svg,在 svg-tag 中使用不同的 id。因此,我将生成“#mask”-id 的副本。使用多个 id 是无效代码。所以我想用一个类来引用适当的掩码。这意味着我不能使用mask=url()-technique。
<svg id="svg2" width="5cm" height="5cm" viewBox="0 0 200 200"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<mask class="mask">
<circle cx="100" cy="100" r="100" fill="white"></circle>
</mask>
</defs>
<rect x="0" y="0" width="200" height="200" fill="red" mask="url(can't use this)"></rect>
</svg>
如果掩码有一个类而不是 id,有没有一种方法可以将掩码应用于 rect 元素?也许使用 javaScript 或其他我没有想到的方式。
完整的故事/背景: 我实际上正在用 php 为 Joomla 制作一个 svg 图像滑块模块。这个 php 生成一个包含 javascript、css 和 svg 的模块。我使用 javascript 为面具设置动画。 我确实让它与唯一的 id 一起工作。我只是想知道是否有一种方法可以在不引用 id 的情况下为元素分配掩码。我可能想要这样做,因为我的代码阅读起来有点混乱,因为我必须在我的 javascript/svg 和 css 中为每个唯一 ID 使用一些 php。
【问题讨论】:
-
掩码总是一样的吗?如果是这样,请单独加载一次。或者为每个生成并使用不同的 id(例如,从 svg 元素派生)
-
@jcaron 不,掩码并不总是相同的。它们有时可能相同,但并非总是如此。目前我正在使用不同的 id-approach。但我想我可能更愿意将它称为只更改整个 svg 中的一个 id。
标签: javascript html svg