如何仅使用内联 SVG 在 mouseout 上反转动画 linearGradient
How to reverse animate linearGradient on mouseout with inline SVG only
我想在 mouseout 上的 svg linearGradient 上创建一个平滑的反向动画。这是否可能仅使用内联代码(没有 js 或 css)?
我尝试了以下代码,但在第一个鼠标悬停动画完成后,它恢复到第 1 帧,这破坏了平滑的鼠标移开效果。
在 mouseout 上我想平滑地反转 linearGradient。
https://codepen.io/daneli84/pen/WNejrdd
<svg viewBox="0 0 360 160" width="360" height="160" id="ani">
<defs>
<linearGradient id="lightGradient">
<stop offset="0%" stop-color="red">
<animate attributeName="stop-color" values="red; gold" dur=".5s"
fill="freeze" begin="ani.mouseover" />
</stop>
<stop offset="90%" stop-color="gold">
</stop>
</linearGradient>
</defs>
<circle cx="80" cy="80" r="50" fill="url(#lightGradient)"/>
</svg>
使用 mouseout 和反向 linearGradient 实现平滑反向动画的预期结果。
这个怎么样。我们在 mouseenter 上以一种方式制作动画,在 mouseleave 上以相反的方式制作动画。
<svg viewBox="0 0 360 160" width="360" height="160" id="ani">
<defs>
<linearGradient id="lightGradient">
<stop offset="0%" stop-color="red">
<animate attributeName="stop-color" values="red; gold" dur=".5s"
fill="freeze" restart = "whenNotActive" begin="ani.mouseenter" />
<animate attributeName="stop-color" values="gold; red" dur=".5s"
fill="freeze" restart = "whenNotActive" begin="ani.mouseleave" />
</stop>
<stop offset="90%" stop-color="gold">
</stop>
</linearGradient>
</defs>
<circle cx="80" cy="80" r="50" fill="url(#lightGradient)"/>
</svg>
我想在 mouseout 上的 svg linearGradient 上创建一个平滑的反向动画。这是否可能仅使用内联代码(没有 js 或 css)?
我尝试了以下代码,但在第一个鼠标悬停动画完成后,它恢复到第 1 帧,这破坏了平滑的鼠标移开效果。
在 mouseout 上我想平滑地反转 linearGradient。
https://codepen.io/daneli84/pen/WNejrdd
<svg viewBox="0 0 360 160" width="360" height="160" id="ani">
<defs>
<linearGradient id="lightGradient">
<stop offset="0%" stop-color="red">
<animate attributeName="stop-color" values="red; gold" dur=".5s"
fill="freeze" begin="ani.mouseover" />
</stop>
<stop offset="90%" stop-color="gold">
</stop>
</linearGradient>
</defs>
<circle cx="80" cy="80" r="50" fill="url(#lightGradient)"/>
</svg>
使用 mouseout 和反向 linearGradient 实现平滑反向动画的预期结果。
这个怎么样。我们在 mouseenter 上以一种方式制作动画,在 mouseleave 上以相反的方式制作动画。
<svg viewBox="0 0 360 160" width="360" height="160" id="ani">
<defs>
<linearGradient id="lightGradient">
<stop offset="0%" stop-color="red">
<animate attributeName="stop-color" values="red; gold" dur=".5s"
fill="freeze" restart = "whenNotActive" begin="ani.mouseenter" />
<animate attributeName="stop-color" values="gold; red" dur=".5s"
fill="freeze" restart = "whenNotActive" begin="ani.mouseleave" />
</stop>
<stop offset="90%" stop-color="gold">
</stop>
</linearGradient>
</defs>
<circle cx="80" cy="80" r="50" fill="url(#lightGradient)"/>
</svg>