Я не знаю, почему SVG получает такой плохой рэп по сравнению с его кузиной страны, элементом холста. Удивительно, сколько раз SVG отклоняется как неадекватное или неуместное, прежде чем любая серьезная попытка даже сделана для изучения его возможностей.
Пожалуйста, взгляните на this fiddle.
Большая часть этого приводится в движение динамической оценки движущейся точки на пути, следующим образом:
function arrowline(canvas, pathstr, duration, attr, callback)
{
var guide_path = canvas.path(pathstr).attr({ stroke: "none", fill: "none" });
var path = canvas.path(guide_path.getSubpath(0, 1)).attr(attr);
var total_length = guide_path.getTotalLength(guide_path);
var start_time = new Date().getTime();
var interval_length = 25;
var interval_id = setInterval(function()
{
var elapsed_time = new Date().getTime() - start_time;
var this_length = elapsed_time/duration * total_length;
var subpathstr = guide_path.getSubpath(0, this_length);
attr.path = subpathstr;
path.animate(attr, interval_length);
if (elapsed_time >= duration)
{
clearInterval(interval_id);
if (callback != undefined) callback();
}
}, interval_length);
return path;
}
Я бросаю вызов любому, чтобы найти решение с HTML-холст, который является более экономичным, чем это. Если вы планируете добавить какую-либо интерактивность к этому виджету, подумайте о том, как легко привязывать событие к SVG при оценке экономики.
+1 Я также испытал неоправданную ненависть/невежество для SVG. Он недооценен. – dwerner
Ох и удивительный пример! – dwerner
Отличный пример, и я люблю SVG! –