gpt4 book ai didi

css - 在 SVG 中绘制箭头动画

转载 作者:技术小花猫 更新时间:2023-10-29 10:58:16 25 4
gpt4 key购买 nike

我是 SVG 世界的新手,当我想“画”一个 flex 的箭头时遇到了一些问题。

基本上,我想创建一个像 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;}
}

结果如下:

Straight arrow

太棒了,但现在我想要一个 flex 的箭头。所以我更新了 animate 标签,如下所示:

<animate
dur="2s"
repeatCount="indefinite"
attributeName="d"
values="M7,121 C7,121 7,121 7,121; M7,121 C66,4 143,75 147,125" />

我刚刚更改了动画路径以获得曲线路径。但结果如下:

Curved arrow

我认为这很合乎逻辑,但这不是我想要的。标记当前在直线上移动;它应该遵循绘图路径。

老实说,我不知道该怎么做,任何建议都很好:)

你可以找到a JSFiddle here .

如您所见,这些实验中没有使用 JS,如果我们能避免这种语言而只使用 SVG+CSS 就好了。

提前致谢!

最佳答案

我认为您可能会发现这篇关于 svg 线条动画的文章非常有用: https://css-tricks.com/svg-line-animation-works/

CSS:

.path {
stroke-dasharray: 1000;
stroke-dashoffset: 1000;
animation: dash 5s linear alternate infinite;
}

@keyframes dash {
from {
stroke-dashoffset: 1000;
}
to {
stroke-dashoffset: 0;
}
}

实际演示:http://codepen.io/chriscoyier/pen/bGyoz

其中有一个关于 JavaScript 和确定要绘制的线的长度的警告。如果您不想使用 JS,您可以通过更新 dasharray 和 dashoffset 值来确定动画的长度。

关于css - 在 SVG 中绘制箭头动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26654620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com