Плавный показ и плавное скрытие картинки.
Всем привет. Подскажите как грамотно сделать плавное скрытие картинки gif. Как сделать плавный показ картинки мне понятно, в стилях вот этот код
#rybak {
grid-row: 1;
grid-column: 1 / span 8;
transform: scale(0.8);
position: relative;
margin-top: 6em;
margin-left: -1em;
opacity:0;
transition: 2s;
animation: show 2s 1;
animation-fill-mode: forwards;
animation-delay: 3s;
}
@keyframes show{
0%{
opacity:0;
}
100% {
opacity:1;
}
}
а вот как его так же плавно скрыть через, скажем 10 сек., не получается. Навыки в css минимальные. Нашел JS
setTimeout(function(){
document.getElementById('rybak').style.display = 'none';
}, 1000);
для скрытия картинки, но там скрытие происходит мгновенно, а не плано. Всем спасибо. |
Цитата:
Или придется делать так как будто ее и не было? |
Cделать так как будто ее и не было.
|
BSI,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
#rybak {
grid-row: 1;
grid-column: 1 / span 8;
transform: scale(0.8);
position: relative;
margin-top: 6em;
margin-left: -1em;
opacity: 0;
transition: 2s;
animation: show 14s 3s;
animation-fill-mode: forwards;
background-color: #FF0000;
height: 100px;
}
@keyframes show {
0%,
100% {
opacity: 0;
}
20%,
90% {
opacity: 1;
}
}
#rybak.hide {
display: none;
}
</style>
<script>
document.addEventListener("DOMContentLoaded", function() {
const elem = document.querySelector("#rybak");
elem.addEventListener("animationend", function(event) {
elem.classList.add("hide")
});
});
</script>
</head>
<body>
<div id="rybak"></div>
</body>
</html>
|
РОНИ, огромное спасибо за быстрый ответ. Всё работает. Бай Бог Вам долгих лет. Как бы это же реализовать с помощью CSS ?
|
Цитата:
Можно указать в одной анимации больше кадров и действий в них... Но есть ограничение - не все свойства анимируются. К таким относится свойство display. :-? |
Цитата:
Картинка появляется... Потом пауза в 5 секунд. Потом скрывается. Но так "место остается" от нее. :) Убирать нужно как показали выше.
<style>
#rybak {
animation: show 5s ease 1s, hide 2s ease 5s;
animation-fill-mode: forwards;
opacity:0;
}
@keyframes show{
0%{
opacity:0;
}
100% {
opacity:1;
}
}
@keyframes hide{
0%{
opacity:1;
}
100% {
opacity:0;
}
}
</style>
<img id='rybak' src='https://javascript.ru/forum/images/ca_serenity/misc/logo.gif' />
|
Как вариант "убирать" меняя размеры в ноль...
<style>
.container {
display: inline-block;
padding: 10px;
background-color: silver;
}
#rybak {
animation: show 5s ease 1s, hide 3s ease 5s;
animation-fill-mode: forwards;
opacity:0;
}
@keyframes show{
0%{
opacity:0;
}
100% {
opacity:1;
}
}
@keyframes hide{
0%{
opacity:1;
}
99% {
opacity:0;
}
100% {
width:0;
height:0;
}
}
</style>
<div class='container'>
<img id='rybak' src='https://javascript.ru/forum/images/ca_serenity/misc/logo.gif' />
</div>
|
ksa, большое спасибо за участие в ответе на мой вопрос. Сейчас буду пробовать ваши варианты. Мне не понятно, для чего в ответе у рони установлен JS, вроде бы и без него всё работает. Прошу строго не судить за мои вопросы, знаний у меня практически нет. Всем ещё раз огромное спасибо.
|
Цитата:
строки 39 и 32 пост #4 |
| Часовой пояс GMT +3, время: 09:41. |