【发布时间】:2017-05-10 08:14:43
【问题描述】:
假设我有一个包含几个顶级“g”元素的 SVG 图像,如下所示:
<svg>
<g id="id1">...</g>
<g id="id2">...</g>
<g id="id3">...</g>
...
</svg>
现在我想只显示开头带有id1 的那个,随着用户反复点击图像(类似于PowerPoint 演示文稿)滑过id2、id3 等等。我尝试了这是第一步:
<animate xlink:href="#id2" attributeName="opacity" from="0" to="0" dur="0s" begin="0s"/>
<animate xlink:href="#id3" attributeName="opacity" from="0" to="0" dur="0s" begin="0s"/>
...
<animate xlink:href="#id2" attributeName="opacity" from="0" to="100" dur="0.25s" begin="click" id="anim1"/>
<animate xlink:href="#id1" attributeName="opacity" from="100" to="0" dur="0.25s" begin="anim1.begin" id="anim2"/>
...
第一行应该使除了id1 图像之外的所有图像都透明 - 这工作正常。接下来的两行应该使id1 透明并显示id2 - 这是行不通的。我假设具有较高 id 的透明图像位于较高级别(在 z 方向上)并阻止较低图像的点击事件。但我不知道如何让它们完全“消失”或其他什么。
也许还有更好的方法可以做到这一点......?
【问题讨论】:
-
另外,如果我建议的方法有效,我真的不知道如何处理更多图像。所以也许有一种完全不同的方式来做到这一点......?
-
就我个人而言,如果 JavaScript 可用的话,我会使用它,有一些库可以提供帮助,例如 Snap.svg 或 SVG.js。 Chrome 正在弃用它对 SVG Animate 的支持(它有一个 polyfill)。我认为正在推广的路线是针对 CSS 动画或 Javascript。 stackoverflow.com/questions/30965580/…
-
Javascript 不是一个选项,我必须使用 SVG。我有一个 SVG 图形框,这是我唯一可以进行更改的地方。它周围的所有 HTML 都是固定的。
-
虽然,等等……这不是重点……你的意思是,我应该提供上面提到的 SVG 图像,然后使用 Javascript 来翻阅“g”?我可以做到……但那会怎样?我的 Javascript 很差...
-
你需要something.click,其中something 是你点击的元素的id。 begin="click" 不起作用。