我希望这个动画能在页面上停留几秒钟然后消失
I wish this animation would stay on the page for a few seconds and then fade away
@keyframes appear {
0% {
opacity: 0;
}
50% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@keyframes appearFromTop {
0% {
opacity: 0;
transform: translateY(-500px);
border-radius: 50px;
}
30% {
opacity: 1;
transform: translateY(0);
}
50% {
border-radius: 10px;
}
100% {
opacity: 0;
transform: translateY(-500px);
border-radius: 50px;
}
}
.box {
width: 500px;
height: 60px;
background-color: black;
position: absolute;
top: 0;
bottom: 800px;
left: 0;
right: 0;
margin: auto;
transition: background-color 0.25s 0.25s ease-in-out;
}
.box--from-top {
animation: appearFromTop 5s 0.5s both;
}
我希望这个动画能在页面上停留几秒钟然后消失。所以我的问题是:我该怎么做?我想我什么都试过了。动画延迟不起作用,动画播放状态不起作用
您可以在动画过程中添加“no-op”:即在动画时间轴的10%到90%处不透明度设为1。
对于 5 秒的长度,这意味着 5 秒的 80%(即 4 秒)元素保持完全不透明,0.5 秒淡入,0.5 秒淡出。
box{
animation: 5s linear 0s 1 normal fade-in-out;
opacity: 0;
}
@keyframes fade-in-out{
0% {opacity: 0}
10% {opacity: 1}
90% {opacity: 1}
100% {opacity: 0}
}
<box> Hello, world! </box>
是这样的吗?您可以制作一个长动画,并且只在某些百分比值之间制作动画。
例如:
一个 5 秒的动画,其中 fade-in 发生在 0-20% 之间,fade-out 发生在 80-100% 之间意味着它淡入 1 秒,在屏幕上停留 3 秒,再次淡出 1 秒.
.box {
width: 500px;
height: 60px;
background-color: black;
position: absolute;
top: -60px;
left: 0;
margin: auto;
}
.box--from-top {
animation: inOut 5s;
}
@keyframes inOut {
0% {
transform: translateY(0);
opacity: 0;
}
20% {
transform: translateY(50px);
opacity: 1;
}
80% {
transform: translateY(50px);
opacity: 1;
}
100% {
transform: translateY(0);
opacity: 0;
}
}
<div class="box box--from-top"></div>
也可以有一个单独的 fade-in 和 fade-out 动画 CSS 动画加上一点点 javascript 可以为您解决问题。总的来说这样可以更灵活。
const box = document.querySelector('.box');
setTimeout(function(){
box.classList.remove('fadein');
box.classList.add('fadeout');
}, 5000);
.box {
width: 500px;
height: 60px;
background-color: black;
position: absolute;
top: 0;
left: 0;
margin: auto;
}
.fadein {
animation: fadein 1s;
}
.fadeout {
animation: fadeout 1s;
animation-fill-mode: forwards;
}
@keyframes fadein {
0% {
opacity: 0;
top: -60px;
}
100% {
top: 0;
opacity: 1;
}
}
@keyframes fadeout {
0% {
opacity: 1;
}
100% {
top: -60px;
opacity: 0;
}
}
<div class="box fadein"></div>
@keyframes appear {
0% {
opacity: 0;
}
50% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@keyframes appearFromTop {
0% {
opacity: 0;
transform: translateY(-500px);
border-radius: 50px;
}
30% {
opacity: 1;
transform: translateY(0);
}
50% {
border-radius: 10px;
}
100% {
opacity: 0;
transform: translateY(-500px);
border-radius: 50px;
}
}
.box {
width: 500px;
height: 60px;
background-color: black;
position: absolute;
top: 0;
bottom: 800px;
left: 0;
right: 0;
margin: auto;
transition: background-color 0.25s 0.25s ease-in-out;
}
.box--from-top {
animation: appearFromTop 5s 0.5s both;
}
我希望这个动画能在页面上停留几秒钟然后消失。所以我的问题是:我该怎么做?我想我什么都试过了。动画延迟不起作用,动画播放状态不起作用
您可以在动画过程中添加“no-op”:即在动画时间轴的10%到90%处不透明度设为1。
对于 5 秒的长度,这意味着 5 秒的 80%(即 4 秒)元素保持完全不透明,0.5 秒淡入,0.5 秒淡出。
box{
animation: 5s linear 0s 1 normal fade-in-out;
opacity: 0;
}
@keyframes fade-in-out{
0% {opacity: 0}
10% {opacity: 1}
90% {opacity: 1}
100% {opacity: 0}
}
<box> Hello, world! </box>
是这样的吗?您可以制作一个长动画,并且只在某些百分比值之间制作动画。
例如: 一个 5 秒的动画,其中 fade-in 发生在 0-20% 之间,fade-out 发生在 80-100% 之间意味着它淡入 1 秒,在屏幕上停留 3 秒,再次淡出 1 秒.
.box {
width: 500px;
height: 60px;
background-color: black;
position: absolute;
top: -60px;
left: 0;
margin: auto;
}
.box--from-top {
animation: inOut 5s;
}
@keyframes inOut {
0% {
transform: translateY(0);
opacity: 0;
}
20% {
transform: translateY(50px);
opacity: 1;
}
80% {
transform: translateY(50px);
opacity: 1;
}
100% {
transform: translateY(0);
opacity: 0;
}
}
<div class="box box--from-top"></div>
也可以有一个单独的 fade-in 和 fade-out 动画 CSS 动画加上一点点 javascript 可以为您解决问题。总的来说这样可以更灵活。
const box = document.querySelector('.box');
setTimeout(function(){
box.classList.remove('fadein');
box.classList.add('fadeout');
}, 5000);
.box {
width: 500px;
height: 60px;
background-color: black;
position: absolute;
top: 0;
left: 0;
margin: auto;
}
.fadein {
animation: fadein 1s;
}
.fadeout {
animation: fadeout 1s;
animation-fill-mode: forwards;
}
@keyframes fadein {
0% {
opacity: 0;
top: -60px;
}
100% {
top: 0;
opacity: 1;
}
}
@keyframes fadeout {
0% {
opacity: 1;
}
100% {
top: -60px;
opacity: 0;
}
}
<div class="box fadein"></div>