requestAnimationFrame(frame);
function frame(t){
fill.setAttribute('stroke-dasharray', `${t/40} 1000`);
let p1 = fill.getPointAtLength(t/40);
let p2 = fill.getPointAtLength(t/40+2);
let dy = p2.y - p1.y;
let dx = p2.x - p1.x;
let a = dy - dx ? Math.atan2(dy, dx)*180/Math.PI+90+Math.sin(t/280)*20 : 90;
end.setAttribute('transform', `translate(${p1.x},${p1.y})rotate(${a})`);
requestAnimationFrame(frame);
}
这是一个带有掩码的选项,路径是偶数。通过蛮力选择弧和贝塞尔曲线的点=)
线条末端摆动的技巧是使用旋转矩形制作的,该矩形覆盖有隐藏渐变背景的相同蒙版。
SVG滤镜解决方案
作为一种可能的解决方案,因为 TC 没有详细说明装载机是如何填充的。
水平填充:
垂直填充:
要绘制 svg 图形,您需要矢量编辑器或某种生成器来绘制贝塞尔曲线。本主题提供用于绘制补丁的此类工具的示例和链接。
根据图中给定的形状创建补丁:
*.svg动画创作
stroke-dashoffset您可以通过从最大值更改为零 来使用动画。要创建一条路径,一条曲线将沿其动画形状,我们再次使用矢量编辑器:
要使线条在宽度上填满整个图形,请设置 -
stroke-width:15.5px;把它们放在一起
带有渐变的 svg 形状及其填充动画: