Снегопад на сайте
Вот уже скоро наступят новогодние праздники и рождество. Медленно падающий пушистый снег является одним из символов наступающего торжества. В данном уроке мы представим очень простую технику CSS для вывода снегопада на вашем сайте. Кроме отличного эффекта вы получите представление о работе с множественными фонами и кадрами анимации в CSS.
Примечание
Поддержка кадров анимации, к сожалению, далека от совершенства. Поэтому, если вы ищете решение, которое будет работать в большом количестве браузеров, вам следует поискать плагин jQuery, например такой. Ну а те, кто хочет расширить свои знания по CSS, могут продолжать чтение урока.
В примерах кода не будут использоваться префиксы браузеров для наглядности.
Использование фона
Нужно подготовить три изображения со снегопадом формата PNG. Пример такого изображения приведен ниже, прозрачный фон заменен черным цветом для наглядности. На нем присутствуют простые круги (можно подключить фантазию и изобразить ажурные снежинки) белого цвета на прозрачном фоне. На всех трех изображениях снежинки надо сделать разных размеров, чтобы потом создавалась иллюзия перспективы.
Данные изображения будут использоваться в качестве фона в CSS.
Применение множественного фона абсолютно идентично единичному. Разница заключается только в том, что вы ставите запятую после URL первого изображения и добавляете еще одно. Вот как будет выглядеть код. Помните, что изображения по умолчанию будут повторяться.
body { background-color: #6b92b9; background-image: url('snow1.png'), url('snow2.png'), url('snow3.png'); }
Множественные фоны отлично поддерживаются и беспокоиться стоит только о старых версиях IE. Как и все новое в CSS множественные фоны поддерживаются начиная с версии IE9.
Устанавливаем кадры анимации
@keyframes snow { 0% {background-position: 0px 0px, 0px 0px, 0px 0px;} 100% {background-position: 500px 1000px, 400px 400px, 300px 300px;} }
“@keyframes” является ключевым словом для определения последовательности кадров, “snow” - имя данной последовательности. Вы можете установить любое понравившееся имя.
Затем мы определяем два кадра анимации. Первый задает вид страницы до начала анимации, второй - после ее завершения. В начале все изображения фона помещаются в верхний левый угол страницы с помощью установки координат “0px 0px”. В конце каждое изображение будет передвинуто в новое положение. Также, как и при определении фона, координаты для каждого изображения просто разделяются запятыми.
Логика позиционирования
Положение каждого изображения в конце анимации кажется выбранным произвольно. Но в действительности все установлено преднамеренно. Чтобы заставить анимацию работать правильно нужно разобраться с несколькими моментами.
Причина, по которой выбраны кадры анимации вместо простого и лучше поддерживаемого свойства transition, заключается в том, что анимация, основанная на кадрах может повторяться бесконечно. Поэтому нужно помнить, что как только анимация закончит воспроизведение последнего кадра, она начнется снова. Если не уделить должного внимания позиционированию, то в момент перехода на экране будет виден рывок кадров.
Трюк заключается в том, чтобы установить размер изображения так, чтобы последний кадр соответствовал первому. В результате получится иллюзия бесконечного плавного движения. Второе изображение имеет размер 400px Х 400px, поэтому второй фон смещается на 400px вниз в ходе анимации. А а третий фон по томуже принципу смещается на 300px. Для первого изображения используется другой трюк. Его нужно смещать несколько быстрее, поэтому его высота удваивается (1000px). Благодаря умножению высоты на целое число, последний кадр соответствует первому.
Таким же образом смещаются изображения и по горизонтали. Создается иллюзия снегопада.
Реализация анимации
Заключительным шагом будет установка в селекторе body свойства “animation”. Первым в нем указано имя последовательности кадров "snow", затем длительность анимации 20 секунд, потом устанавливается функция времени (linear) и завершает определение бесконечного проигрывания.
body { background-color: #6b92b9; background-image: url('snow.png'), url('snow3.png'), url('snow2.png'); animation: snow 20s linear infinite; }
Готово!
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/rmI0ImMHZJ0/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей Индийская пословица |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.