Два варианта несложной анимации заголовка с помощью Java Script - Purple Web

Два варианта несложной анимации заголовка с помощью Java Script

Анимация текста — это не просто модный тренд, а мощный инструмент коммуникации, способный значительно усилить восприятие контента. Грамотно применённая, она делает пользовательский опыт более увлекательным, интуитивным и запоминающимся.

Движущийся или изменяющийся текст сразу бросается в глаза. Это особенно важно в условиях информационного шума, когда пользователи сканируют страницы за секунды. Анимация помогает выделить ключевые сообщения, заголовки или призывы к действию.

Рассмотрим два варианта анимации текста для вашего сайта, которые реализованы с помощью JS.

Вариант 1

Сделаем последовательную смену слов с появлением и исчезновением (через прозрачность) с плаыным fade-in/fade-out эффектом.

ШАГ 1. В html-части добавим элемент:

<div id="word-container">Привет</div>

ШАГ 2. Добавим стили, которые определяют плавность смены текста и изначальный показатель прозрачности:

#word-container {
  font-size: 32px;
  opacity: 0;
  transition: opacity 1s ease-in-out;
}

ШАГ 3. И последний шаг для добавления динамики — js-скрипт:

<script>
const words = ["Привет", "Мир", "JavaScript", "Анимация"];
const el = document.getElementById("word-container");

let index = 0;

function showNextWord() {
  // Убираем текущий текст (fade out)
  el.style.opacity = 0;

  setTimeout(() => {
    // Меняем текст после исчезновения
    el.textContent = words[index];
    el.style.opacity = 1;

    // Переход к следующему слову
    index = (index + 1) % words.length;

    // Запускаем следующий цикл после паузы
    setTimeout(showNextWord, 3000); // 3 секунды на слово
  }, 1000); // время fade-out
}

// Старт
showNextWord();
</script>
  • 1 секунда исчезновение (fade-out)
  • 1 секунда появление (fade-in)
  • 1 секунда пауза на экране

Длительность эффектов, количество слов и другие элементы стиля можно адаптировать под ваш проект.

Вариант 2

JavaScript-скрипт с анимацией печати слов по одной букве, стиранием и сменой на следующее слово. Работает с HTML-элементом

ШАГ 1. В html-части добавим элемент:

<span id="typewriter"></span>

ШАГ 2. Добавим скрипт:

<script>
const words = ["Привет", "Мир", "JavaScript", "Анимация"];
const el = document.getElementById("typewriter");

let wordIndex = 0;
let charIndex = 0;
let isDeleting = false;
let speed = 100; // скорость печати

function type() {
  const currentWord = words[wordIndex];
  
  // Определяем текущий текст для отображения
  let displayed = isDeleting
    ? currentWord.substring(0, charIndex--)
    : currentWord.substring(0, charIndex++);

  el.textContent = displayed;

  if (!isDeleting && charIndex === currentWord.length + 1) {
    // Подождать перед стиранием
    isDeleting = true;
    speed = 50;
    setTimeout(type, 1000);
    return;
  }

  if (isDeleting && charIndex === 0) {
    // Перейти к следующему слову
    isDeleting = false;
    wordIndex = (wordIndex + 1) % words.length;
    speed = 100;
  }

  setTimeout(type, speed);
}

// Запускаем
type();
</script>

ШАГ 3. С помощью стилей можем добавить мигающий курсор:

<style>
#typewriter::after {
  content: "|";
  animation: blink 1s infinite;
}
@keyframes blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}
</style>