Specifying animation-fill-mode property value as forwards will ensure that the target element retains the computed values set by the last keyframe of the CSS animation. For example:
animation-fill-mode: noneanimation-fill-mode: forwards
@keyframes bgAnim {
from { background-color: gainsboro; }
to { background-color: aquamarine; }
}
div {
width: 100px;
height: 100px;
background-color: gainsboro;
animation-name: bgAnim;
animation-duration: 1s;
animation-fill-mode: forwards;
}
For this to work, you must, of course, have animation keyframes defined for both the start (i.e. the from or 0% keyframe) and the end keyframes (i.e. the to or 100% keyframe).
Please be aware of the fact that when using animation-fill-mode: forwards, what the "last keyframe" refers to depends on the value of animation-direction and animation-iteration-count. Depending on these, the animation may stop at the end frame, or the start frame.
When Does the Animation Stop at the End Frame with animation-fill-mode: forwards?
The following table shows when the last keyframe is going to be the ending frame (i.e. the frame defined at to or 100%):
animation-direction |
animation-iteration-count |
|---|---|
normal |
any number |
alternate |
odd number |
alternate-reverse |
even number |
When Does the Animation Stop at the Start Frame with animation-fill-mode: forwards?
The following table shows when the last keyframe is going to be the same as the starting frame (i.e. the frame defined at from or 0%):
animation-direction |
animation-iteration-count |
|---|---|
reverse |
any number |
alternate |
even number |
alternate-reverse |
odd number |
This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.