I've made a small background animation where a div changes color over time. It works smoothly, but when it gets to 100% it jumps straight to 0% without any transition. I've searched on google and tried different ways of doing the animation, but I've been unable to get a fluid "restart" if the animation.
What am I missing?
-webkit-animation: pulsate 20s infinite;
animation: pulsate 20s infinite;
-moz-animation: pulsate 20s infinite;
@-webkit-keyframes pulsate {
0% {background: @black}
25% {background: @red}
50% {background: @blue}
75% {background: @orange}
100% {background: @green}
}
@keyframes pulsate {
0% {background: @black}
25% {background: @red}
50% {background: @blue}
75% {background: @orange}
100% {background: @green}
}
@-moz-keyframes pulsate {
0% {background: @black}
25% {background: @red}
50% {background: @blue}
75% {background: @orange}
100% {background: @green}
}
The animation-timing-function specifies the speed curve of an animation. The speed curve defines the TIME an animation uses to change from one set of CSS styles to another. The speed curve is used to make the changes smoothly.
The only way to truly pause an animation in CSS is to use the animation-play-state property with a paused value. In JavaScript, the property is “camelCased” as animationPlayState and set like this: element.
Compared with animating elements using JavaScript, CSS animations can be easier to create. They can also give better performance, as they give the browser more control over when to render frames, and to drop frames if necessary.
You just have to fix your frames in another way : make the from
(0%) and to
(100%) values the same:
html, body {
width: 100%; height: 100%;
margin: 0;
padding: 0;
}
body {
-webkit-animation: pulsate 20s linear infinite;
-moz-animation: pulsate 20s linear infinite;
animation: pulsate 20s linear infinite;
}
@-webkit-keyframes pulsate {
0% {background: black}
20% {background: red}
40% {background: blue}
60% {background: orange}
80% {background: green}
100% {background: black}
}
@-moz-keyframes pulsate {
0% {background: black}
20% {background: red}
40% {background: blue}
60% {background: orange}
80% {background: green}
100% {background: black}
}
@keyframes pulsate {
0% {background: black}
20% {background: red}
40% {background: blue}
60% {background: orange}
80% {background: green}
100% {background: black}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With