Плавность изменния свойства display?

Есть элемент со свойством display: none. По клику на определенную кнопку, к этому элементу прикрепляется класс со свойством display: block. Вопрос: можно ли это сделать плавно, через transition как-то, например. Просто вот все отлично работает, если я меняю свой-во не display, а visibility соответственно, тогда можно спокойно плавно менять opacity, transform и т.д и делать это плавно через transition. Но со свойством display у меня уже это все не работает. В общем, думаю нормально объяснил, спасибо заранее.
  • Вопрос задан
  • 295 просмотров
Пригласить эксперта
Ответы на вопрос 3
andykov
@andykov
Shit happens
Нельзя. Transition работает с числовыми значениями.
Ответ написан
Комментировать
thewind
@thewind
php программист, front / backend developer
Ставите opacity:0, потом display:block; потом плавно меняете Opacity от 0 до 1
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Не выйдет, никак. Точно так же как visibility и float. Все что влияет на поток документа неможет быть анимировано.

Решение: сначала делаем класс hide с opacity 0, у стиля элемента ставим транзишен на opacity. Затем, по окончанию анимации (из js отлавливаем событие) выставляем display:none или вовсе удаляем из DOM. То же самое в обратном порядке для анимированного возникновения: сначала вставляем в DOM и потом уже анимируем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы