我在SVG世界中颇为新颖,当我要“绘制”弯曲的箭头时遇到一些问题。SVG中的箭头绘制动画
基本上,我想创建一个像this article中解释的动画,但在路径的末尾有一个形状以显示箭头。
下面是我用直箭头代码:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<defs>
<marker
id="arrow"
orient="auto"
viewBox="0 0 10 10"
markerWidth="3"
markerHeight="4"
markerUnits="strokeWidth"
refX="1" refY="5">
<polyline points="0,0 10,5 0,10 1,5" fill="black" />
</marker>
</defs>
<path
id="line"
marker-end="url(#arrow)"
stroke-width="3"
fill="none"
stroke="black">
<animate
dur="2s"
repeatCount="indefinite"
attributeName="d"
values="M10,10 L10,10; M10,10 L45,25;" />
</path>
用了CSS的:
#line
{
stroke-dasharray: 5;
stroke-dashoffset: 10;
-webkit-animation: draw 1s linear infinite;
}
@-webkit-keyframes draw
{
to { stroke-dashoffset: 0;}
}
结果如下:
这很酷,但现在我想要一个弯曲的箭头。所以我已经更新了如下的动画标签:
<animate
dur="2s"
repeatCount="indefinite"
attributeName="d"
values="M7,121 C7,121 7,121 7,121; M7,121 C66,4 143,75 147,125" />
我刚更改了动画的路径,以便有一个弯曲的。但结果是下面的一个:
我认为这是非常合乎逻辑的,但它不是我想什么。标记正在直线上移动;它应该遵循绘图路径。
我不知道怎么做,说实话,任何建议将是巨大的:)
你可以找到a JSFiddle here。
正如您所看到的,这些实验中没有使用JS,如果我们可以避免使用这种语言并且只使用SVG + CSS,那将会很好。
在此先感谢!
尽管此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 - [来自评论](/ review/low-quality-posts/15799580) – Adam 2017-04-10 15:31:52
感谢@Adam,我已经用Chris的代码更新了这个例子。 – Paesano2000 2017-04-10 17:49:22