【发布时间】:2021-02-13 08:56:39
【问题描述】:
我是一个尝试制作交互式 SVG 的新手——最好不使用任何外部脚本。我的目标是让一个 SVG 元素充当交互式切换开关,以使另一个元素出现和消失。
请在下面找到一个简单的版本,其中文本“Toggle”用作切换。单击时,这会将矩形的 opacity 属性从 0 设置为 1 以使其出现。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
width="47.652294mm"
height="10.096307mm"
viewBox="0 0 47.652294 10.096307"
version="1.1"
id="svg8">
<style
id="style861"></style>
<defs
id="defs2" />
<g
id="layer1"
transform="translate(-29.085516,-61.315985)">
<rect
fill="#ff0000"
opacity="0"
id="rect"
width="9.8317242"
height="9.8317242"
x="66.773796"
y="61.448277">
<animate attributeName="opacity" fill="freeze" from="0" to="1" dur="2s" begin="toggletext.click" />
</rect>
<text
xml:space="preserve"
style="font-size:8.46667px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:0.264583"
x="29.085516"
y="68.002762"
id="toggletext"><tspan
id="tspan857"
x="29.085516"
y="68.002762"
style="stroke-width:0.264583">Toggle</tspan></text>
</g>
</svg>
任何后续点击现在都只会重复相同的动画。但我希望任何第二次(第四次、第六次等)单击以反转动画(即使矩形消失)。换句话说,真正充当切换开关。
任何关于如何使用尽可能少的代码和/或不可见元素来实现此效果的建议将不胜感激。 谢谢!
【问题讨论】:
-
你需要代码或不可见的元素,否则这是不可能的。
-
您可以看到到目前为止的两个答案使用代码或额外元素。
-
感谢您的评论@罗伯特。从我的谷歌搜索中,我确实只能找到包含不可见元素或额外代码的解决方案,但我不确定我是否错过了一些新的和/或简单的可能性。
标签: animation svg interactive