Is there a way to create a gif like image with javascript based on some png or jpg?
Just a simple code that change one image for another, creating the impression of a animation, just like a gif.
The idea is to use for generating a banner, so ill upload the pictures (thats done) and i need a code for this animation.
Stackoverflow used this technique for its unicorn animations last april fools day. I preserved the animations on my website. The animation code is my own - I didn't look at how stackoverflow was doing it.
The concept is to create a sprite, and then change the background position on an interval.
const frameHeight = 102;
const frames = 15;
const div = document.getElementById("animation");
let frame = 0;
setInterval(function () {
const frameOffset = (++frame % frames) * -frameHeight;
div.style.backgroundPosition = "0px " + frameOffset + "px";
}, 100);
#animation {
background-image: url(https://jumpingfishes.com/dancingpurpleunicorns/charging.png);
background-repeat: no-repeat;
height: 102px;
width: 140px;
}
<div id="animation"></div>
Edit: If you don't want to create a sprite, here's an alternate technique you can use. Put all of your animation frame images in a div and hide all but the first one. In your setInterval
function, change which image is diplayed:
const frames = document.getElementById("animation").children;
const frameCount = frames.length;
let i = 0;
setInterval(function () {
frames[i % frameCount].style.display = "none";
frames[++i % frameCount].style.display = "block";
}, 100);
#animation img {
display: none;
}
#animation img:first-child {
display: block;
}
<div id="animation">
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging01.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging02.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging03.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging04.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging05.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging06.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging07.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging08.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging09.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging10.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging11.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging12.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging13.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging14.png" />
<img src="https://jumpingfishes.com/dancingpurpleunicorns/charging15.png" />
</div>