Мастерская: анимированный звездопад на чистом CSS
Начинаем с базовой структуры HTML, которая включает объявление документа, заголовок и подключение CSS-файла. Контейнер, в котором расположены все звёзды — .sky-container
. Отдельные звёзды разметим с помощью span
с классом star
.
Задаём для body
фоновый градиент и центрируем содержимое по вертикали и горизонтали.
Добавляем стиль для контейнера, чтобы он занимал всю высоту экрана и был абсолютно позиционирован.
Добавляем стиль для звезды, устанавливая ее позицию и размеры, а также добавляя эффект тени.
Добавляем псевдоэлементы ::before
и ::after
для создания лучей звезды.
Поворачиваем ::after
, чтобы завершить лучи.
Модифицируем псевдоэлементы, добавляя градиентный фон, чтобы создать эффект сияния и сделать их более привлекательными.
Такой же градиентный фон задаём хвосту звезды.
Делаем ширину псевдоэлементов нулевой и добавляем им анимацию, чтобы они изменяли свою ширину.
Создаем анимацию shining
, которая изменяет ширину псевдоэлементов от 0 до 30 пикселей, создавая эффект мерцания.
Добавляем анимацию для хвоста звезды, чтобы он изменял свою ширину от 0
до 100
пикселей.
Добавляем анимацию shooting
, которая перемещает звезду по горизонтали, создавая эффект движения. Эта анимация будет работать одновременно с анимацией tail
.
Добавляем в разметку ещё несколько звёзд. Пока их не видно, так как они все расположены в одном месте и анимируются одновременно.
Задаём собственные координаты и задержку анимации для первой звезды.
Задаём собственные координаты и задержку анимации для второй звезды.
Задаём собственные координаты и задержку анимации для остальных звёзд.
Осталось повернуть контейнер неба на 45 градусов, чтобы звёзды падали по диагонали. Также можно добавить контейнер с overflow: hidden;
, чтобы обрезать углы, появившиеся после поворота, и избавитья от полос прокрутки.
Эффект анимированных падающих звёзд завершён.
Поэкспериментируйте с кодом самостоятельно: меняйте количество звёзд, их расположение, цвет, параметры анимации и делитесь с друзьями.