Мы знаем, что css animation/transition не работал с display: block и display: none;
Поэтому я пытаюсь использовать
someDom.style.transition = '0.3s'
someDom.style.display='block'
someDom.style.opacity=1
для воспроизведения анимации как fadeIn.
Но все равно не получается, потому что работает слишком быстро.
Я знаю, что setTimeout на этот раз будет работать хорошо, но из-за цикла событий javaScript я не хочу, чтобы он стал асинхронным событием.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Может это решит твою проблему
const item = document.querySelector('.item');
item.style.display = 'block';
item.classList.add('fadeIn');.item {
display: none;
width: 100px;
height: 100px;
background: grey;
}
.item.fadeIn {
animation: fadeIn 1s linear;
-webkit-animation: fadeIn 1s linear;
-moz-animation: fadeIn 1s linear;
-o-animation: fadeIn 1s linear;
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}<div class = "item"></div>
Спасибо, вы удовлетворили этот запрос! Но я оставлю этот вопрос открытым, потому что я хочу найти способ получить хук изменения стиля.