如何使 CSS 关键帧动画在重新启动时流畅?
How can I make this CSS keyframe animation smooth when it restarts?
我有一个 CSS 关键帧动画,应该看起来像雪。它被设置为持续 20 秒并无限循环,它确实如此。问题在于,当动画在设定时间后到达终点并重新开始时,有点像 jerky/clunky 重新开始。
有没有什么办法可以让动画在循环播放时更流畅,看起来不像是在重新开始,而是一直在播放?
body {
height: 100%;
/*background-color: #333;*/
background-color: #6b92b9;
background-image: url('http://i.imgur.com/BiSmXaq.png'), url('http://i.imgur.com/XHuy0NJ.png'), url('http://i.imgur.com/okpRxJU.png');
-webkit-animation: snow 20s linear infinite;
-moz-animation: snow 20s linear infinite;
-ms-animation: snow 20s linear infinite;
animation: snow 20s linear infinite;
}
@-webkit-keyframes snow {
0% {
background-position: 0px 0px, 0px 0px, 0px 0px
}
50% {
background-color: #b4cfe0
}
100% {
background-position: 500px 1000px, 400px 400px, 300px 300px;
background-color: #6b92b9;
}
}
@-moz-keyframes snow {
0% {
background-position: 0px 0px, 0px 0px, 0px 0px
}
50% {
background-color: #b4cfe0
}
100% {
background-position: 500px 1000px, 400px 400px, 300px 300px;
background-color: #6b92b9;
}
}
@-ms-keyframes snow {
0% {
background-position: 0px 0px, 0px 0px, 0px 0px
}
50% {
background-color: #b4cfe0
}
100% {
background-position: 500px 1000px, 400px 400px, 300px 300px;
background-color: #6b92b9;
}
}
@keyframes snow {
0% {
background-position: 0px 0px, 0px 0px, 0px 0px
}
50% {
background-color: #b4cfe0
}
100% {
background-position: 500px 1000px, 400px 400px, 300px 300px;
background-color: #6b92b9;
}
}
background-position 必须乘以原始大小。
例如,如果您的图像尺寸为 100x100,则背景位置可以为 100x100、100x200、200x100、200x200 等等
body {
height: 100%;
/*background-color: #333;*/
background-color: #6b92b9;
background-image: url('http://i.imgur.com/BiSmXaq.png'), url('http://i.imgur.com/XHuy0NJ.png'), url('http://i.imgur.com/okpRxJU.png');
animation: snow 5s linear infinite both;
}
@keyframes snow {
0% {
background-position: 0px 0px, 0px 0px, 0px 0px;
}
50% {
background-color: #b4cfe0;
}
100% {
background-position: 300px 300px, 400px 400px, 500px 500px;
background-color: #6b92b9;
}
}
我有一个 CSS 关键帧动画,应该看起来像雪。它被设置为持续 20 秒并无限循环,它确实如此。问题在于,当动画在设定时间后到达终点并重新开始时,有点像 jerky/clunky 重新开始。
有没有什么办法可以让动画在循环播放时更流畅,看起来不像是在重新开始,而是一直在播放?
body {
height: 100%;
/*background-color: #333;*/
background-color: #6b92b9;
background-image: url('http://i.imgur.com/BiSmXaq.png'), url('http://i.imgur.com/XHuy0NJ.png'), url('http://i.imgur.com/okpRxJU.png');
-webkit-animation: snow 20s linear infinite;
-moz-animation: snow 20s linear infinite;
-ms-animation: snow 20s linear infinite;
animation: snow 20s linear infinite;
}
@-webkit-keyframes snow {
0% {
background-position: 0px 0px, 0px 0px, 0px 0px
}
50% {
background-color: #b4cfe0
}
100% {
background-position: 500px 1000px, 400px 400px, 300px 300px;
background-color: #6b92b9;
}
}
@-moz-keyframes snow {
0% {
background-position: 0px 0px, 0px 0px, 0px 0px
}
50% {
background-color: #b4cfe0
}
100% {
background-position: 500px 1000px, 400px 400px, 300px 300px;
background-color: #6b92b9;
}
}
@-ms-keyframes snow {
0% {
background-position: 0px 0px, 0px 0px, 0px 0px
}
50% {
background-color: #b4cfe0
}
100% {
background-position: 500px 1000px, 400px 400px, 300px 300px;
background-color: #6b92b9;
}
}
@keyframes snow {
0% {
background-position: 0px 0px, 0px 0px, 0px 0px
}
50% {
background-color: #b4cfe0
}
100% {
background-position: 500px 1000px, 400px 400px, 300px 300px;
background-color: #6b92b9;
}
}
background-position 必须乘以原始大小。 例如,如果您的图像尺寸为 100x100,则背景位置可以为 100x100、100x200、200x100、200x200 等等
body {
height: 100%;
/*background-color: #333;*/
background-color: #6b92b9;
background-image: url('http://i.imgur.com/BiSmXaq.png'), url('http://i.imgur.com/XHuy0NJ.png'), url('http://i.imgur.com/okpRxJU.png');
animation: snow 5s linear infinite both;
}
@keyframes snow {
0% {
background-position: 0px 0px, 0px 0px, 0px 0px;
}
50% {
background-color: #b4cfe0;
}
100% {
background-position: 300px 300px, 400px 400px, 500px 500px;
background-color: #6b92b9;
}
}