将动画 SVG 停止到屏幕上的某个位置
Stop an animated SVG to a certain position on screen
使用这个例子,有没有办法让这个 CSS 动画停止到屏幕上的一个固定点?因此,例如,它正在移动,我决定让它在距离屏幕右上角 20 像素处停止。这可能只用 CSS 吗?
.bird {
background-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/174479/bird-cells.svg);
background-size: auto 100%;
width: 88px;
height: 125px;
will-change: background-position;
animation-name: fly-cycle;
animation-timing-function: steps(10);
animation-iteration-count: infinite;
}
.bird--one {
animation-duration: 1s;
animation-delay: -0.5s;
}
.bird-container {
position: absolute;
top: 20%;
left: -10%;
transform: scale(0) translateX(-10vw);
will-change: transform;
animation-name: fly-right-one;
animation-timing-function: linear;
animation-iteration-count: infinite;
}
.bird-container--one {
animation-duration: 15s;
animation-delay: 0;
}
@keyframes fly-cycle {
100% {
background-position: -900px 0;
}
}
@keyframes fly-right-one {
0% {
transform: scale(0.3) translateX(-10vw);
}
10% {
transform: translateY(2vh) translateX(10vw) scale(0.4);
}
20% {
transform: translateY(0vh) translateX(30vw) scale(0.5);
}
30% {
transform: translateY(4vh) translateX(50vw) scale(0.6);
}
40% {
transform: translateY(2vh) translateX(70vw) scale(0.6);
}
50% {
transform: translateY(0vh) translateX(90vw) scale(0.6);
}
60% {
transform: translateY(0vh) translateX(110vw) scale(0.6);
}
100% {
transform: translateY(0vh) translateX(110vw) scale(0.6);
}
}
<div style="width:100%;">
<div class="bird-container bird-container--one">
<div class="bird bird--one"></div>
</div>
</div>
通过将 VW 更改为较小的数字,您可以让它在距离屏幕右侧一定距离处停止。如果您总是希望小鸟在行进屏幕宽度的大约 90% 时停下来,那么您可以将 VW 更改为 90。
按照目前的设置方式,要让它停在一定数量的像素上并不容易。
通过将下面的代码设置为 50% 并删除较高的百分比,您可以让小鸟向右飞 90% 并飞到右上角。
50% {
transform: translateY(-20vh) translateX(90vw) scale(0.6);
}
使用这个例子,有没有办法让这个 CSS 动画停止到屏幕上的一个固定点?因此,例如,它正在移动,我决定让它在距离屏幕右上角 20 像素处停止。这可能只用 CSS 吗?
.bird {
background-image: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/174479/bird-cells.svg);
background-size: auto 100%;
width: 88px;
height: 125px;
will-change: background-position;
animation-name: fly-cycle;
animation-timing-function: steps(10);
animation-iteration-count: infinite;
}
.bird--one {
animation-duration: 1s;
animation-delay: -0.5s;
}
.bird-container {
position: absolute;
top: 20%;
left: -10%;
transform: scale(0) translateX(-10vw);
will-change: transform;
animation-name: fly-right-one;
animation-timing-function: linear;
animation-iteration-count: infinite;
}
.bird-container--one {
animation-duration: 15s;
animation-delay: 0;
}
@keyframes fly-cycle {
100% {
background-position: -900px 0;
}
}
@keyframes fly-right-one {
0% {
transform: scale(0.3) translateX(-10vw);
}
10% {
transform: translateY(2vh) translateX(10vw) scale(0.4);
}
20% {
transform: translateY(0vh) translateX(30vw) scale(0.5);
}
30% {
transform: translateY(4vh) translateX(50vw) scale(0.6);
}
40% {
transform: translateY(2vh) translateX(70vw) scale(0.6);
}
50% {
transform: translateY(0vh) translateX(90vw) scale(0.6);
}
60% {
transform: translateY(0vh) translateX(110vw) scale(0.6);
}
100% {
transform: translateY(0vh) translateX(110vw) scale(0.6);
}
}
<div style="width:100%;">
<div class="bird-container bird-container--one">
<div class="bird bird--one"></div>
</div>
</div>
通过将 VW 更改为较小的数字,您可以让它在距离屏幕右侧一定距离处停止。如果您总是希望小鸟在行进屏幕宽度的大约 90% 时停下来,那么您可以将 VW 更改为 90。 按照目前的设置方式,要让它停在一定数量的像素上并不容易。
通过将下面的代码设置为 50% 并删除较高的百分比,您可以让小鸟向右飞 90% 并飞到右上角。
50% {
transform: translateY(-20vh) translateX(90vw) scale(0.6);
}