CSS анимация с setTimeout не работает - PullRequest
0 голосов
/ 20 сентября 2018

Я сделал некоторую анимацию с помощью CSS3.

Источник очень прост.Просто напечатайте текст и пропустите его через 4 с.

Ниже приведен текущий источник.

const intro1 = document.getElementsByClassName('intro1')[0];

setTimeout(() => {
  intro1.classList.remove('fade-in');
  intro1.classList.add('fade-out');
}, 3500);
body {
  margin: 30px 0;
  padding: 0 15px;
}

section {
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: aliceblue;
  width: 100%;
  height: 100%;
  font-size: 2rem;
  font-weight: 100;
}

span {
  text-align: center;
  position: absolute;
}


/* Intro animation */

.fade-in {
  display: inline-block;
  overflow: hidden;
  white-space: nowrap;
  animation: fadeIn 4s;
}

.fade-out {
  animation: fadeOut 1s;
}

@keyframes fadeIn {
  from {
    width: 0;
  }
  to {
    width: 100%;
  }
}

@keyframes fadeOut {
  to {
    opacity: 0;
  }
}
<html>

<head>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
  <main>
    <section>

      <span class="intro1 fade-in">TEST TEST TEST TEST TEST TEST TEST TEST </span>

    </section>
  </main>
  <script src="src.js"></script>
</body>

</html>

Я определил fade-in и fade-out и инициализировал .intro1 имя класса 'fade-in'.

Изадержать 3,5 с setTimeout, удалить класс fade-in и добавить класс fade-out, чтобы удалить его.

Когда я его запускаю, текст появляется и исчезает, работает нормально.

Но послетекст исчезает, он снова отображается следующим образом.

enter image description here

Я не хочу показывать снова, когда непрозрачность текста становится равной 0.

Любое решение по этому поводу?

Спасибо.

1 Ответ

0 голосов
/ 20 сентября 2018

Вы должны добавить это к fade-out class

.fade-out {
  animation: fadeOut 1s;
  animation-fill-mode: forwards; // that's what you need to add
}

О animation-fill-mode:

Свойство animation-fill-mode определяет стиль для целиэлемент, когда анимация не воспроизводится (до ее запуска, после ее завершения или в обоих случаях).

Свойство animation-fill-mode может иметь следующие значения:

none - по умолчаниюзначение.Анимация не будет применять какие-либо стили к элементу до или после его выполнения

forwards - Элемент сохранит значения стиля, заданные последним ключевым кадром (зависит от направления анимации и итерации-анимации-count)

backwards - Элемент получит значения стиля, заданные первым ключевым кадром (в зависимости от направления анимации), и сохранит их в течение периода задержки анимации

both - анимация будет следовать правилам как вперед, так и назад, расширяя свойства анимации в обоих направлениях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...