Здесь происходит две вещи: переход и анимация. Сначала я удалил много ненужного кода CSS, чтобы было понятнее.
Ваш код работает должным образом. Когда страница загружается, классом fade-in
запускается анимация «плавного перехода». Текст "hello" постепенно меняется от непрозрачности 0 до непрозрачности 1 в течение секунды, как и ожидалось.
Между тем ваш Javascript срабатывает при загрузке страницы и добавляет класс not-displayed
во внешний div через две секунды. Это запускает эффект перехода, который через полсекунды применяет красный фон к div, поскольку он затемняет div, возвращая его непрозрачность 0.
Я не уверен, чего конкретно вы пытаетесь достичь. здесь, но вы соединили успешный переход и эффект анимации.
const splash = document.querySelector('.splash');
console.log(splash);
document.addEventListener('DOMContentLoaded', () => {
setTimeout(() => {
splash.classList.add('not-displayed');
}, 2000);
});
.splash.not-displayed {
opacity: 0;
background-color: #f06c65;
transition: all 0.5298s ease-out;
}
.fade-in {
opacity: 0;
animation: fadein 1s ease-in forwards;
}
@keyframes fadein {
to {
opacity: 1;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="splash">
<h1 class="fade-in">
hello
</h1>
</div>