Найти тему
Журнал «Код»

Чёртовы психи: как добавить снежинок на любой сайт одной строкой

Оглавление

Ну ладно, тремя строками. Это, считай, одна.

Утро 30 декабря, редакционная летучка. Все помятые, уставшие, Данька немного похмельный. Нужно решить, что постить в остаток года.

— Давайте про C# и Си-подобные языки?
— Слишком сложно, всем пофигу.
— Тогда математическую задачу про скорость Санта-Клауса.
— Католическое рождество прошло, и всем пофигу.
— Чего люди сегодня хотят больше всего?
— Чтобы от них отвалили.
— …
— Чтобы снежок выпал. Но чтобы город не встал при этом.

Решено! В конце статьи — раздел «Готовый код», можно сразу скопировать, вставить и наслаждаться. Или читайте, как это сделано.

Идея и требования

Сегодня будем делать штуку с такими параметрами:

  • Запускает на веб-странице снегопад. Белые снежинки падают сверху вниз, не мешая основной странице.
  • Работает на любой странице, никаких дополнительных зависимостей.
  • Если я владелец сайта, то должен иметь возможность включить её буквально одной строкой, не программируя ничего и специально не отлаживая.
  • Если я гость, то я могу подключить её через консоль.
  • Никому не хочется сидеть над этим долго, поэтому сделано должно быть ЗА ПОЛЧАСА МАКСИМУМ.

Шаг 1. Своровать скрипт снежинок

Забиваем в поиске Snowfall webpage javascript и тыкаем буквально в первую ссылку: codepen.io/html5andblog/pen/pjKvgG — это скрипт Snow Flurry 2.0, автор S.W. Clough, лицензия MIT. Это значит, что этот скрипт можно использовать и в хвост, и в гриву, но указывать на эту лицензию. Вот, указали.

Сам код просто копипастим в новый файлик и называем его snowfall2020.js:

Код снегопада

Если интересно поднастроить снегопад под свои эстетические запросы, можно поковыряться в последней функции — где numberOfFlakes, maxSize, maxSpeed и color. Можно вместо снежинок сделать капли крови, установив бордовый цвет (#c90e0e); можно лёгкий снегопад превратить в метель, повысив numberOfFlakes до 800, а maxSpeed до 80–100. Но помните, что чем больше снежинок — тем больше нагрузка на процессор.

Шаг 2. Связанная библиотека

Snow-flurry.js требует библиотеки jQuery (мы о ней как-то писали). Несмотря на то, что эта библиотека очень распространена, по условиям задачи нам нужен полностью самостоятельный скрипт. Тут два пути.

Первый путь — умный: заставлять веб-мастера или пользователя сначала подключать jQuery, а потом уже подключать наш скрипт со снегопадом. Ну и оценивать, есть на странице jQuery или нет. Это увеличит объём кода, который нужно вставлять пользователю, и это не соответствует нашей задаче.

Второй путь — варварский: воткнуть код jQuery прямо внутрь нашего файлика snowfall2020.js. Минус этого подхода — у пользователя будет дважды загружаться jQuery, это плохо с точки зрения ресурсов. Но так как это новогодняя дурка, раз в год можно.

Находим нужную версию jQuery и варварски копипастим прямо в наш файлик. Слабонервным лучше не видеть, а бывалые и так представят.

Шаг 3. Инъекция CSS

Наша библиотека Snow Flurry требует нескольких строк CSS, чтобы снежинки правильно рисовались на экране. Сам CSS выглядит так:

Всё бы ничего, но мы должны подключать один файлик JS. Заставлять пользователя вручную подсовывать CSS в страницу мы не можем. Нам нужно вживить CSS в страницу с помощью JavaScript.

Проводим в поиске пять минут по ключевым словам Add CSS with JavaScript. Получаем такое заклинание:

Ахалай махалай, сим салабим, рахат лукум:

Этот нехитрый гибрид засунет необходимый CSS в начало нашего документа, дополнив таким образом таблицу стилей.

Добавляем это заклинание в начало нашего файлика.

Готовый код

На выходе получаем файл, который делает три вещи:

  • Добавляет в страницу снегопадовый CSS.
  • Загружает jQuery.
  • Загружает и включает снегопад.

Вот полный код:

Как использовать: если у вас HTTPS

Посмотрите на иконку вашего сайта или адрес. Если там стоит замочек или написано HTTPS, вам нужны скрипты, переданные по безопасному протоколу. Если нет замочка, написано HTTP или «Небезопасно» — вам в следующий раздел.

Для вебмастеров — добавьте на страницу такой код:

Для гостей сайта — откройте консоль и вставьте такой код:

Чтобы открыть консоль: CMD + ALT + I; Ctrl + Alt + I или найдите консоль в меню браузера.

Как использовать: если у вас HTTP

Для сайтов без замочка и с протоколом HTTP нужен скрипт, размещённый на незащищённых сайтах.

Для вебмастеров — добавьте на страницу такой код:

Для гостей сайта — откройте консоль и вставьте такой код:

Чтобы открыть консоль: CMD + ALT + I; Ctrl + Alt + I или найдите консоль в меню браузера.

Результат

Лучше всего выглядит на сайтах с тёмным или цветным фоном, потому что белый снег на белом фоне не виден. А так — красота:

-2