Плавная анимация блоков
Мне нужно что бы при наведении на block1 появлялся drop__block1 c скоростью .5s а пропадал с скоростью 3s.
.main__block {
display: inline-block;
}
.block1 {
width: 100px;
height: 50px;
}
.block1:hover .drop__block1 {
display: block;
}
.block2 {
width: 100px;
height: 50px;
}
.block2:hover .drop__block2 {
display: block;
}
.drop__block1 {
background-color: blue;
display: none;
}
.drop__block2 {
background-color: tomato;
display: none;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div class="main__block">
<div class="block1">hello
<div class="drop__block1">aaaaaaaa</div>
</div>
<div class="block2">world
<div class="drop__block2">bbbbbbbb</div>
</div>
</div>
</body>
</html>
Ответы (1 шт):
Автор решения: Михаил Камахин
→ Ссылка
.block {
width: 100px;
height: 50px;
}
.block__drop {
opacity: 0;
visibility: hidden;
transition: 0.3s linear opacity, 0.3s linear visibility;
}
.block_1 .block__drop {
background-color: blue;
}
.block_2 .block__drop {
background-color: tomato;
}
.block:hover .block__drop {
opacity: 1;
visibility: visible;
transition: 0.5s linear opacity, 0.5s linear visibility;
}
<div class="main__block">
<div class="block block_1">hello
<div class="block__drop">aaaaaaaa</div>
</div>
<div class="block block_2">world
<div class="block__drop">bbbbbbbb</div>
</div>
</div>
Для удобства, я бы использовал CSS переменные:
.block {
width: 100px;
height: 50px;
}
.block__drop {
--hoverOut: 0.3s;
--hoverOver: 0.5s;
opacity: 0;
visibility: hidden;
transition-timing-function: linear;
transition-duration: var(--hoverOut);
transition-property: opacity, visibility;
}
.block_1 .block__drop {
background-color: blue;
}
.block_2 .block__drop {
background-color: tomato;
}
.block:hover .block__drop {
opacity: 1;
visibility: visible;
transition-duration: var(--hoverOver);
}
<div class="main__block">
<div class="block block_1">hello
<div class="block__drop">aaaaaaaa</div>
</div>
<div class="block block_2">world
<div class="block__drop">bbbbbbbb</div>
</div>
</div>