Вы не можете анимировать свойство display
, но вы можете изменить непрозрачность элемента.Как сказал @Gerard в комментариях, используйте класс CSS.Итак, как-то так.
const div = document.querySelector('div')
document.querySelector('button').addEventListener('click', function(){
div.classList.toggle('hidden')
})
div { transition: 0.5s }
.hidden { opacity: 0 }
<button>Show/hide</button>
<div>i am a div.</div>
Если вы не хотите, чтобы div
занимал пространство, пока оно скрыто, вы можете добавить, скажем, transform:scale(0)
или height:0
до .hidden
.