помогите с плавной анимацией "hover", нужно чтобы плавно появлялось и пропадало
.glaz {
display: none;
position: absolute;
top: 60px;
left: 50px;
}
.kartinka:hover + .glaz {
display: block;
}
<body>
<img class="kartinka" src="./wear1.jpg" alt="cloth" height="500px" />
<img class="glaz" src="./ic_eye_product.svg" alt="glaz" />
</body>
Ответы (2 шт):
скопирую свой же ответ из схожего вопроса:
любая анимация/переход работает только со свойствами, у которых возможны промежутчные значения.
если это цвет - то да, т.к. между двумя любыми цветами вычислимо промежуточное состояние.
если это text-decoration-line или, например, display - то нет. т.к. в природе не существует промежуточных состояний между их возможными значениями.
конкретно в вашем случае можно анимировать прозрачность у .glaz, но таким образом:
При наведении:
- исходная прозрачность:
opacity:0;и время анимацииtransition-duration:0.5s. - элементу при наведении делается
display:block; - ПОСЛЕ этого скрипт проставляет ему некий класс, у которого стоит
opacity:1- тогда УЖЕ ПОКАЗАННЫЙ элемент начинает приобретать непрозрачный вид плавно.
При убирании мышки все делается в обратном порядке - сначала элемент становится невидимым путем уменьшения Opacity до нуля, и лишь потом исчезает совсем с помощью проставления ему display:none.
Без яваскрипта вы такое не сделаете.
на display не работает transition, поэтому нужно делать через Opacity
.glaz {
opacity: 0;
position: absolute;
top: 60px;
left: 50px;
transition: .3s;
}
.kartinka:hover + .glaz {
opacity: 1;
}
<body>
<img class="kartinka" src="./wear1.jpg" alt="cloth" height="500px" />
<img class="glaz" src="./ic_eye_product.svg" alt="glaz" />
</body>