<style>
#path {
animation: offset 6s linear 1 both;
stroke-dasharray: 20px,10px;
stroke-dashoffset: 0px;
}
@keyframes offset {
0%{
stroke-dashoffset: 100px;
}
100%{
stroke-dashoffset: 0;
}
}
</style>
<svg width="800" height="600">
<defs>
<marker id="Triangle" viewBox="0 0 10 10" refX="1" refY="5" markerWidth="10" markerHeight="10" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z" />
</marker>
</defs>
<path id="path" fill="none" stroke="red" stroke-dashoffset="0px" stroke-width="1px" d="M452,293c0,0,0-61,72-44c0,0-47,117,81,57
s5-110,10-67s-51,77.979-50,33.989" marker-mid="url(#Triangle)" marker-end="url(#Triangle)" >
</path>
</svg>
stroke-dashoffset:属性指定了dash模式到路径开始的距离。
为什么stroke-dashoffset 由100px 过渡到 0px,虚线的运动为什么不是应该由右到左而 是由左向右呢? 因为我的理解是:该属性指定了 虚线的距离 路径起始点的偏移量。
这个属性确实是相对于起始点的偏移,但是,重点来了,相对的对象并不是原始位置的起点,而是dash array!因此,正数偏移x值相当于以dash array往右数的x位置的图形开始绘图,视觉效果像把dash array相对起点位置往左拉(dash array循环自身),负数偏移x相当于以dash array往左数的x位置开始绘图,视觉效果就向右了。
这就是为什么你从100到0视觉上是个往右运动的过程。