Техническая поддержка сервиса Quadro.Boards

Объявление

Новости сервиса

О форуме

Quadro.Support – это форум технической поддержки различных проектов и сервисов Quadro.Systems LLC, на котором грамотные технические специалисты всегда смогут помочь вам в решении проблем, или же подсказать ответы на самые сложные вопросы. Так же на форуме собрана обширная база знаний по различным аспектам наших сервисов. Не забывайте пользоваться поиском ;)

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Техническая поддержка сервиса Quadro.Boards » Скрипты и дополнения » Скрипт снега, настраиваемый. 2017+


Скрипт снега, настраиваемый. 2017+

Сообщений 1 страница 2 из 2

1

Был откопан мною где-то в 2006-м году еще вообще в другой системе и полностью переделан сначала одним кодером, а затем допилен Шаманом году в 2017-м. Не уверен даже, что от оригинального скрипта осталось, кроме общего списка настроек.  %-)

Код:
$(document).ready(function () {

  // the number of snowflakes
  var snowmax = 65;

  // the colors for the snow
  var snowcolor = new Array("#FFF", "#FFF", "#FFF", "#b9dff5", "#FFF");

  // the fonts create snowflakes
  var snowtype = new Array("Times");

  // the letter creates snowflake
  var snowletter = "*";

  // speed of sinking
  var sinkspeed = 0.5;

  // maximum-size of snowflakes
  var snowmaxsize = 35;

  // minimal-size of snowflakes
  var snowminsize = 8;

  // the snowing-zone
  //(1-4: all, left, center, right)
  var snowingzone = 1;

  // config end

  // donnot touch, pls, i donot sure for it
  var snow = new Array();
  var marginbottom = 0;
  var marginright = 0;
  var timer;
  var i_snow = 0;
  var x_mv = new Array();
  var crds = new Array();
  var lftrght = new Array();
  var browserinfos = navigator.userAgent;
  var ie5 = document.all && document.getElementById && !browserinfos.match(/Opera/);
  var ns6 = document.getElementById && !document.all;
  var opera = browserinfos.match(/Opera/);
  var browserok = ie5 || ns6 || opera;

  function randommaker(range) {
    rand = Math.floor(range * Math.random());
    return rand;
  }

  for (i = 0; i <= snowmax; i++) {
    $('body').append("<span id='s" + i + "' style='position:absolute;top:-" + snowmaxsize + "'>" + snowletter + "</span>");
  }

  function initsnow() {
    if (ie5 || opera) {
      marginbottom = document.body.scrollHeight;
      marginright = document.body.clientWidth - 15;
    }
    else if (ns6) {
      marginbottom = document.body.scrollHeight;
      marginright = window.innerWidth - 15;
    }
    var snowsizerange = snowmaxsize - snowminsize;
    for (i = 0; i <= snowmax; i++) {
      crds[i] = 0;
      lftrght[i] = Math.random() * 15;
      x_mv[i] = 0.03 + Math.random() / 10;
      snow[i] = document.getElementById("s" + i);
      snow[i].style.fontFamily = snowtype[randommaker(snowtype.length)];
      snow[i].size = randommaker(snowsizerange) + snowminsize;
      snow[i].style.fontSize = snow[i].size + 'px';
      snow[i].style.color = snowcolor[randommaker(snowcolor.length)];
      snow[i].style.zIndex = 2;
      snow[i].sink = sinkspeed * snow[i].size / 5;
      if (snowingzone == 1) { snow[i].posx = randommaker(marginright - snow[i].size) };
      if (snowingzone == 2) { snow[i].posx = randommaker(marginright / 2 - snow[i].size) };
      if (snowingzone == 3) { snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 4 };
      if (snowingzone == 4) { snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 2 };
      snow[i].posy = randommaker(2 * marginbottom - marginbottom - 2 * snow[i].size);
      snow[i].style.left = snow[i].posx + 'px';
      snow[i].style.top = snow[i].posy + 'px';
    };
    movesnow();
  }

  function movesnow() {
    for (i = 0; i <= snowmax; i++) {
      crds[i] += x_mv[i];
      snow[i].posy += snow[i].sink;
      snow[i].style.left = snow[i].posx + lftrght[i] * Math.sin(crds[i]) + 'px';
      snow[i].style.top = snow[i].posy + 'px';

      if (snow[i].posy >= marginbottom - 2 * snow[i].size || parseInt(snow[i].style.left) > (marginright - 3 * lftrght[i])) {
        if (snowingzone == 1) { snow[i].posx = randommaker(marginright - snow[i].size) };
        if (snowingzone == 2) { snow[i].posx = randommaker(marginright / 2 - snow[i].size) };
        if (snowingzone == 3) { snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 4 };
        if (snowingzone == 4) { snow[i].posx = randommaker(marginright / 2 - snow[i].size) + marginright / 2 };
        snow[i].posy = 0;
      }
    }
    var timer = setTimeout(movesnow, 50);
  }
  if (UserID !== 200 && UserID !== 397 && UserID !== 375 && UserID !== 18 && UserID !== 418 && UserID !== 41 && UserID !== 519) {
    setTimeout(initsnow, 1000);
  }
});

Про настройки:
  // the number of snowflakes
  var snowmax =
65; - количество снежинок на экран. В оригинале скрипта не рекомендовалось ставить больше 15. Сейчас я б сказал, что идеальное - 35.
Также учтите, что объекты динамичные и своей обработкой могут заметно жрать ресурс на слабых устройствах, могут мешать мобильным. Чем больше снежинок - тем сильнее могут быть тормоза на таком слабом устройстве.

  // the colors for the snow
  var snowcolor =
new Array("#FFF", "#FFF", "#FFF", "#b9dff5", "#FFF"); - таких цветов будут наши снежинки. Можно добавлять цветов больше или меньше, последнее обязательно без запятой.

  // the fonts create snowflakes
  var snowtype
= new Array("Times"); - шрифт, из которого будут использоваться символы для снежинок

  // the letter creates snowflake
  var snowletter
= "*"; - символ, имитирующий снежинку (в нашем случае звёздочка). Можно заменять точками, может, вы вообще хотите, чтобы по экрану летала буква О. Или А. Х)

  // speed of sinking
  var sinkspeed
= 0.5; скорость падения

// maximum-size of snowflakes
  var snowmaxsize
= 35; - максимальный размер снежинок (шрифтовой)

// minimal-size of snowflakes
  var snowminsize
= 8; - минимальный размер снежинок (шрифтовой)

Еще обращу внимание сюда:

if (UserID !== 200 && UserID !== 397 && UserID !== 375 && UserID !== 18 && UserID !== 418 && UserID !== 41 && UserID !== 519) {
    setTimeout(initsnow, 1000);

Выделенные синим пара чисел (остальные тоже) - пользовательские айди. Эта строка была сделана для того, чтобы отключить скрипт снега для тех, кого этот снег на экране бесит.  :rofl: Количество использующихся айди можно сократить, технически, можно вообще убрать.
Но вот такой вот дружелюбный снег.

+1

2

Сам создал тему, но тогда она мне чем-то мешалась или просто оформлять не хотел, не помню, и смахнул её на время в админку. И забыл.
Теперь вспомнил и возвращаю к праздникам на место, скрипт у нас всё равно растащили по форумам еще несколько лет назад.

0


Вы здесь » Техническая поддержка сервиса Quadro.Boards » Скрипты и дополнения » Скрипт снега, настраиваемый. 2017+


Рейтинг форумов | Создать форум бесплатно