动画线悬停时的SVG碰撞点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动画线悬停时的SVG碰撞点相关的知识,希望对你有一定的参考价值。

下面我用svg动画创建一个简单的小提琴:

<svg width="250" height="250" viewbox="0 0 20 20">
<line x1="10" y1="0" x2="10" y2="10"style="stroke:rgb(255,0,0); stroke-width:1">
<animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 10 10" to="360 10 10" dur="7.5s"  repeatCount="indefinite" />
</line>
<circle cx="5" cy="5" r="1" style="fill:rgb(0,255,0);"/>
<circle cx="15" cy="15" r="1" style="fill:rgb(0,0,255);"/>
</svg>

我的问题是:当红线悬停时,有没有办法让蓝色和红色点碰撞(例如改变颜色)?

谢谢

答案

这是我的解决方案:我正在创建一个带线的面具。有2个额外的圆圈(fill:gold)被线条掩盖。

我把动画线放在<g stroke="red">里面因为我希望用过的线是白色的。

svg{border:1px solid;}
<svg width="250" height="250" viewbox="0 0 20 20">

<circle cx="5" cy="5" r="1" style="fill:rgb(0,255,0);" />
<circle cx="15" cy="15" r="1" style="fill:rgb(0,0,255);"/>

<mask id="mask">
<use xlink:href="#L" style="stroke:white"/>
</mask>
<g stroke="red">
<line id="L" x1="10" y1="0" x2="10" y2="10" >
  <animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 10 10" to="360 10 10" dur="7.5s"  repeatCount="indefinite" />
</line>
</g>
<g style="fill:gold;mask: url(#mask)"> 
<circle cx="5" cy="5" r="1" />
<circle cx="15" cy="15" r="1"/>
</g>
</svg>

以上是关于动画线悬停时的SVG碰撞点的主要内容,如果未能解决你的问题,请参考以下文章

悬停时的 SVG 不进行过渡

悬停时的Javascript动画[关闭]

鼠标悬停时的SVG工具提示?

使用 Tailwind 悬停时的 SVG 颜色填充

悬停时的导航滑动线 - 当没有项目是“当前”或“选定”时

无限 SVG 动画在悬停时平滑地检索初始状态