Добавьте forwards
к анимации, она сохранит значения стиля из последнего ключевого кадра, когда анимация закончится, дополнительная информация . Я также внес некоторые изменения в изменение класса.
Рабочий пример:
function showDonate() {
var x = document.getElementById("snackbar");
x.classList.add("show");
setTimeout(function() {
x.classList.remove("show");
}, 3300);
}
showDonate()
#snackbar {
opacity: 0;
min-width: 250px;
// margin-left: 130px;
background-color: #212529;
color: #fff;
text-align: right;
border-radius: 2px;
padding: 16px;
position: fixed;
z -index: 999;
// left: 50%;
bottom: 30px;
font-size: 17px;
}
#snackbar.show {
opacity: 1;
animation: fadein 0.5s, fadeout 0.5s 2.5s forwards;
}
@keyframes fadein {
from {
bottom: 0;
opacity: 0;
}
to {
bottom: 30px;
opacity: 1;
}
}
@keyframes fadeout {
from {
bottom: 30px;
opacity: 1;
}
to {
bottom: 0;
opacity: 0;
}
}
<div id="snackbar"> <b>Hey There!</b> Give us your money! <a href="#">Link</a></div>
Обновить
Чтобы изменить длину анимации:
- Измените видимую длину в CSS (число перед
forwards
) - Измените длину setTimeout в JS (CSS время анимации входа / выхода + число перед
forwards
)
Например, если вы хотите, чтобы он отображался в течение 5 секунд:
- CSS:
animation: fadein 0.5s, fadeout 0.5s 5s forwards;
- JS:
}, 5000+500+500);