var start = performance.now(); var box = document.querySelector('.to-animate'); var path = document.querySelector('path'); var len = path.getTotalLength(); function frame() { var now = performance.now(); var phase = ((now - start) / 6000) % 1; var point = path.getPointAtLength(len * phase); box.style.transform = 'translate3d(' + point.x + 'px,' + point.y + 'px,0)'; requestAnimationFrame(frame); } frame();