Stackoverflow использовал эту технику для анимации единорога в последний день дурака. Я сохранил анимацию на моем сайте . Код анимации - мой собственный - я не смотрел, как это делает stackoverflow.
Идея состоит в том, чтобы создать спрайт, а затем изменить положение фона на интервале.
спрайт http://jumpingfishes.com/dancingpurpleunicorns/charging_clip.png
#animation {
background-image: url(charging.png);
background-repeat: no-repeat;
height: 102px;
width: 140px;
}
function startAnimation() {
var frameHeight = 102;
var frames = 15;
var frame = 0;
var div = document.getElementById("animation");
setInterval(function () {
var frameOffset = (++frame % frames) * -frameHeight;
div.style.backgroundPosition = "0px " + frameOffset + "px";
}, 100);
}
Рабочая демоверсия: http://jsfiddle.net/twTab/
Редактировать: Если вы не хотите создавать спрайт, вот альтернативный метод, который вы можете использовать. Поместите все ваши изображения кадров анимации в div и скройте все, кроме первого. В вашей функции setInterval
переместите первое изображение в конец списка:
#animation img {
display: none;
}
#animation img:first-child {
display: block;
}
<div id="animation">
<img src="charging01.png />
<img src="charging02.png />
<img src="charging03.png />
...
</div>
function startAnimation() {
var frames = document.getElementById("animation").children;
var frameCount = frames.length;
var i = 0;
setInterval(function () {
frames[i % frameCount].style.display = "none";
frames[++i % frameCount].style.display = "block";
}, 100);
}
Рабочая демоверсия: http://jsfiddle.net/twTab/3/