javascript - 在 JavaScript 中对 SVG 线条进行动画处理

标签 javascript jquery snap.svg

你好

我正在使用此代码创建 SVG 线,然后对其进行动画处理,第一个代码不起作用,但其余所有代码都可以,我缺少什么?

var newElement = document.createElementNS('http://www.w3.org/2000/svg','line');
            newElement.setAttribute('class','travelPath');
            newElement.setAttribute('x1',currentCity.x);
            newElement.setAttribute('y1',currentCity.y);
            newElement.setAttribute('x2',nextCity.x+10);
            newElement.setAttribute('y2',nextCity.y+10);
            newElement.style.stroke="#3541b1";
            $("#theSVG").append(newElement);

            var length = newElement.getTotalLength();

            $(newElement).css({
                'stroke-dasharray': length+1,
                'stroke-dashoffset': length+1
            });

            $(newElement).animate({'stroke-dashoffset': 0}, 3000, mina.bounce);

length 变量在第一个 console.log 上返回为 0,但是当我稍后再次运行它时,它会返回正确的值,并显示动画。

几乎就像在尝试制作动画之前尚未绘制线条一样。

最佳答案

根据我对“line”元素的理解,getTotalLength 并没有得到很好的支持。

您可以将其转换为路径。例如...

var newElement = document.createElementNS('http://www.w3.org/2000/svg','path');
newElement.setAttribute('class','travelPath');
newElement.setAttribute('d', "M50,50L100,100")
newElement.style.stroke="#3541b1";

$("#theSVG").append(newElement);

var length = newElement.getTotalLength();
console.log( length )

jsfiddle

看看这是否有帮助。

关于javascript - 在 JavaScript 中对 SVG 线条进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43046154/

相关文章:

javascript - 我怎样才能在javascript中返回两个对象

jquery - 如何让光滑的网格与 iscroll 一起使用

javascript - 如何仅针对 1 个元素重新初始化 AngularJS 1 Controller

javascript - 如何使用 Snap.svg 制作轮子动画?

javascript - snap.svg:旋转原点错误

javascript - 超出最大调用堆栈大小

javascript - 如何使用闭包在 Javascript for 循环中创建事件监听器?

javascript - 重用javascript代码的Django最佳实践

svg - 快照 svg : change viewBox using parameters

javascript - Angularjs 返回错误响应