Падающий снег script

Анимированный эффект снегопада, созданный с помощью простой анимации JavaScript и canvas.

Настройте эффект снегопада прямо в JavaScript.

Настройки с пояснением:

var COUNT = 101; /* плотность снега */ var snowContainer = document.querySelector('#body'); /* id блока где будет падать снег */ ctx.fillStyle = '#c0c0c0'; /* цвет снега */ this.vy = 1 + Math.random() * 3; /* скорость падения 1 и 2 снега */ this.vx = 0.5 - Math.random(); /* скорость и направление бокового ветра */ this.r = 1 + Math.random() * 2; /* размер снежинок 1 и 2 */ canvas.style.opacity = '0.8'; /* прозрачность снега */ canvas.style.zIndex = '-1'; /* индекс, приоритет наложения слоя */ canvas.style.filter = 'blur(1px)'; /* размытие снега */

Пример для сайта

Анимированный эффект снегопада, созданный с помощью простой анимации JavaScript и canvas.

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

Добавьте JavaScript прямо на страницу или сохраните в отдельный файл snow.js и подключите <script src="site/location/snow.js"></script>

Анимированный эффект снегопада JavaScript и canvas.

 
   <script>    
   /* Snow снег падающий */    
     (function () {    
     var COUNT = 101;       /* плотность снега */    
     var snowContainer = document.querySelector('#body');       /* id блока где будет падать снег */    
     var canvas = document.createElement('canvas');    
     var ctx = canvas.getContext('2d');    
     var width = snowContainer.clientWidth;    
     var height = snowContainer.clientHeight;    
     var i = 0;    
     var active = false;    
     function onResize() {    
       width = snowContainer.clientWidth;    
       height = snowContainer.clientHeight;    
       canvas.width = width;    
       canvas.height = height;    
       ctx.fillStyle = '#c0c0c0';       /* цвет снега */    
       requestAnimFrame(update);    
     }    
     var Snowflake = function () {    
       this.x = 0;    
       this.y = 0;    
       this.vy = 0;    
       this.vx = 0;    
       this.r = 0;    
       this.reset();    
     }    
     Snowflake.prototype.reset = function() {    
       this.x = Math.random() * width;    
       this.y = Math.random() * -height;    
       this.vy = 1 + Math.random() * 3;       /* скорость падения 1 и 2 снега */    
       this.vx = 0.5 - Math.random();       /* скорость и направление бокового ветра */    
       this.r = 1 + Math.random() * 2;       /* размер снежинок 1 и 2 */    
       this.o = 0.5 + Math.random() * 0.5;    
     }    
     canvas.style.position = 'absolute';    
     canvas.style.left = canvas.style.top = '0';    
     canvas.style.opacity = '0.8';       /* прозрачность снега */    
     canvas.style.zIndex = '-1';       /* индекс, приоритет наложения слоя  */    
     canvas.style.filter = 'blur(1px)';       /* размытие снега */    
     var snowflakes = [], snowflake;    
     for (i = 0; i < COUNT; i++) {    
       snowflake = new Snowflake();    
       snowflake.reset();    
       snowflakes.push(snowflake);    
     }    
     function update() {    
       ctx.clearRect(0, 0, width, height);    
       for (i = 0; i < COUNT; i++) {    
         snowflake = snowflakes[i];    
         snowflake.y += snowflake.vy;    
         snowflake.x += snowflake.vx;    
         ctx.globalAlpha = snowflake.o;    
         ctx.beginPath();    
         ctx.arc(snowflake.x, snowflake.y, snowflake.r, 0, Math.PI * 2, false);    
         ctx.closePath();    
         ctx.fill();    
         if (snowflake.y > height) {    
           snowflake.reset();    
         }    
       }    
       requestAnimFrame(update);    
       }    
     window.requestAnimFrame = (function(){    
       return  window.requestAnimationFrame       ||    
               window.webkitRequestAnimationFrame ||    
               window.mozRequestAnimationFrame    ||    
               function( callback ){    
                 window.setTimeout(callback, 1000 / 60);    
               };    
     })();    
     onResize();    
     window.addEventListener('resize', onResize, false);    
     snowContainer.appendChild(canvas);    
   })();    
   </script>    
   
codepen

Комментарии