Вероятно, самый простой способ переместить элемент в SVG с помощью JavaScript - это изменить атрибут transform элемента. Это не лучший метод с точки зрения производительности, но он очень удобочитаемый и простой.
Проще всего:
var el = document.getElementById( "mySVGElement" );
for( var i = 0; i < 100; i++ )
{
setTimeout( function( ) {
el.setAttribute( "transform", "translate( " + i + ", 0 )" );
}, 200 + i );
}
Или, если вы хотите, чтобы функция делала это:
function translateElement( element, distance )
{
var x, y;
for( var i = 0; i < 100; i++ )
{
setTimeout( function( ) {
x = parseInt( distance.x * i / 100 );
y = parseInt( distance.y * i / 100 );
element.setAttribute( "transform", "translate( " + x + ", " + y + " )" );
}, 20 + i );
}
}
или по совету Эрика:
function translateElement( element, distance )
{
var x, y;
for( var i = 0; i < 100; i++ )
{
setTimeout( function( ) {
x = distance.x * i / 100;
y = distance.y * i / 100;
element.transform.baseVal.getItem( 0 ).setTranslate( x, y );
}, 20 + i );
}
}
Где элемент - это элемент, который вы перемещаете, а расстояние - объект формы:
{
x: xOffset,
y: yOffset
}