скопирую свой же ответ из схожего вопроса:
любая анимация/переход работает только со свойствами, у которых возможны промежутчные значения.
если это цвет - то да, т.к. между двумя любыми цветами вычислимо промежуточное состояние.
если это text-decoration-line или, например, display - то нет. т.к. в природе не существует промежуточных состояний между их возможными значениями.
конкретно в вашем случае можно анимировать прозрачность у .glaz, но таким образом:
При наведении:
- исходная прозрачность:
opacity:0;
и время анимации transition-duration:0.5s
.
- элементу при наведении делается
display:block;
- ПОСЛЕ этого скрипт проставляет ему некий класс, у которого стоит
opacity:1
- тогда УЖЕ ПОКАЗАННЫЙ элемент начинает приобретать непрозрачный вид плавно.
При убирании мышки все делается в обратном порядке - сначала элемент становится невидимым путем уменьшения Opacity до нуля, и лишь потом исчезает совсем с помощью проставления ему display:none
.
Без яваскрипта вы такое не сделаете.