Добавляем на DTF новогоднее настроение 🎄

Как и обещал, написал гайд к предыдущему посту :-) всего 7 минут и ваш собственный снегопад в браузере готов.

Что будем делать? Небольшой план:

  • научим браузер запускать наши собственные скрипты на сайтах
  • добавим скрипт снегопада на DTF
  • настроим под себя размер, форму и количество снежинок

1. Учим браузер запускать наши скрипты на сайтах

Расскажу на примере браузера Chrome. Для него есть расширение User JavaScript and CSS – позволяет запускать скрипты на любых сайтах. Можно выбрать любое другое расширение запуска скриптов.

Устанавливаем:

Добавляем на DTF новогоднее настроение 🎄

Переходим в Хроме в «Настройки > Расширения», там включаем «Режим разработчика» в верхнем правом углу:

Добавляем на DTF новогоднее настроение 🎄

Готово! Теперь наш браузер умеет запускать наши собственные скрипты на сайтах 🎉

2. Добавляем скрипт снегопада на DTF

Открываем параметры нашего расширения, чтобы запилить туда скрипт. В Хроме выглядит так:

Добавляем на DTF новогоднее настроение 🎄

Откроется окошко, в котором можно вставить наш скрипт:

Добавляем на DTF новогоднее настроение 🎄

Вставляем в это окошко такой простой скрипт:

(function() { var snowflakes = [], moveAngle = 0, animationInterval; function getRandomNumber(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } function createSnowflake() { var el = document.createElement('div'), style = el.style; style.borderRadius = '100%'; style.border = getRandomNumber(1, 4) + 'px solid white'; style.position = 'fixed'; style.zIndex = '999999'; style.boxShadow = '0 0 2px rgba(255,255,255,0.8)'; style.top = getRandomNumber(0, window.innerHeight) + 'px'; style.left = getRandomNumber(0, window.innerWidth) + 'px'; return el; } function moveSnowflakes() { var l = snowflakes.length, i; moveAngle += 0.01; for (i=0; i<l; i++) { moveSnowflake(snowflakes[i]); } } function moveSnowflake(el) { var style = el.style, height = window.innerHeight, radius, top; radius = parseInt(style.border, 10); top = parseInt(style.top, 10); top += Math.cos(moveAngle) + 1 + radius/2; if (top > height) { resetSnowflake(el); } else { style.top = top + 'px'; } } function resetSnowflake(el) { var style = el.style; style.top = '0px'; style.left = getRandomNumber(0, window.innerWidth) + 'px'; } function setup() { var number = window.innerWidth/30, particle, i; for (i=0; i<number; i++) { particle = snowflakes[i] = createSnowflake(); document.body.appendChild(particle); } animationInterval = setInterval(moveSnowflakes, 33); } setup(); }());

Скрипт делает простые вещи: создаёт снежинки поверх сайта, а затем по таймеру регулярно двигает их вниз. Анимация учитывает размер снежинок – большие двигаются быстрее, а маленькие могут даже останавливаться на некоторое время. Если снежинка дошла до низа, она снова перемещается наверх в случайное место. Так и получается эффект снегопада.

Окей, осталось совсем немного. Укажем адрес сайта для запуска скрипта и сохраним:

Добавляем на DTF новогоднее настроение 🎄

Всё готово – открываем DTF и наслаждаемся:

3. Настройка формы, размера и количества снежинок

Чтобы поменять интенсивность снегопада, меняйте строчку:

var number = window.innerWidth/30,

Она определяет количество частиц на экране. В данном случае задаётся значение "ширина вашего окна разделённая на 30". Если хотите усилить снегопад, делите на меньшее число. Например, так:

var number = window.innerWidth/5,

После сохранения скрипта получится более интенсивный снегопад:

Не рекомендую делать снег слишком интенсивным, потому что, во-первых, за ним ни хрена не будет видно, а, во-вторых, может начать лагать от большого количества частиц, участвующих в анимации.

Теперь меняем размер частиц. Для этого нужна строчка:

style.border = getRandomNumber(1, 4) + 'px solid white';

Здесь рандомайзер создаёт нам частицы размером от 1 до 4. Давайте поменяем их, например, на частицы от 3 до 8 – это будет выглядеть так:

style.border = getRandomNumber(3, 8) + 'px solid white';

Результат:

Как видите, частицы получились более крупными.

И, напоследок, можете убрать скругления, если вам нужен квадратный снег. Для этого ищем строчку:

style.borderRadius = '100%';

И удаляем её, чтобы не было скруглений. Получатся квадратные снежинки:

Вообще, если немножко шарите в CSS-стилях, можно настроить абсолютно любые элементы, создать любые формы, цвета и размеры частиц.

Пробуйте :) Если что-то не получается – пишите в комменты, постараюсь всем ответить.

p.s. Гайд создан по фану с помощью кофе, ночного джаза и моего любимого кота))

1212
44
13 комментариев

7 минут ага

1
Ответить

В смысле? Даже меньше.

Установка расширения минута. Залить скрипт ещё одна.

Если тюнинг частиц не нужен, то это вообще быстро всё делается.

А чё не так?

2
Ответить

А как сделать cum так и не написано(
А так красава, +rep

1
Ответить

Про падающий рубль и твой запрос я помню. Это отдельными постами нужно. Твой c пометкой (18+) =D

1
Ответить

Расскажу на примере браузера Chrome. Для него есть расширение User JavaScript and CSS – позволяет запускать скрипты на любых сайтах.в бан за распространение вирусов

1
Ответить

Надеюсь, ты рофлишь)

В случае вирусов там бы уже вопли были в отзывах на расширение: https://chromewebstore.google.com/detail/user-javascript-and-css/nbhcbdghjpllgmfilhnhkllmkecfmpld/reviews

Если этому не доверяешь, можно любое другое использовать. Их много разных.

Ответить