You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.7 KiB
56 lines
1.7 KiB
(function(){
|
|
var canvas = document.getElementById("snow");
|
|
var ctx = canvas.getContext("2d");
|
|
var flakeArray = [];
|
|
|
|
canvas.style.pointerEvents = "none";
|
|
canvas.style.position = "fixed";
|
|
canvas.style.top = 0;
|
|
canvas.style.left = 0;
|
|
canvas.style.width = "100vw";
|
|
canvas.style.height = "100vh";
|
|
canvas.style.zIndex = 1;
|
|
canvas.style.userSelect = "none";
|
|
|
|
function canvasResize(){
|
|
canvas.height = canvas.offsetHeight;
|
|
canvas.width = canvas.offsetWidth;
|
|
}
|
|
canvasResize();
|
|
|
|
window.onresize = function() {
|
|
canvasResize();
|
|
};
|
|
|
|
var MyMath = Math;
|
|
|
|
setInterval(function() {
|
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
ctx.beginPath();
|
|
|
|
var random = MyMath.random();
|
|
var distance = .05 + .95 * random;
|
|
|
|
flake = {};
|
|
flake.x = 1.5 * canvas.width * MyMath.random() - .5 * canvas.width;
|
|
flake.y = -9;
|
|
flake.velX = 2 * distance * (MyMath.random() / 2 + .5);
|
|
flake.velY = (4 + 2 * MyMath.random()) * distance;
|
|
flake.radius = MyMath.pow(5 * random, 2) / 5;
|
|
flake.update = function() {
|
|
var t = this;
|
|
t.x += t.velX;
|
|
t.y += t.velY;
|
|
ctx.beginPath();
|
|
ctx.arc(t.x, t.y, t.radius, 0, 2 * MyMath.PI, !1);
|
|
ctx.fillStyle = "#FFF";
|
|
ctx.fill()
|
|
};
|
|
|
|
flakeArray.push(flake);
|
|
|
|
for (b = 0; b < flakeArray.length; b++) {
|
|
flakeArray[b].y > canvas.height ? flakeArray.splice(b, 1) : flakeArray[b].update()
|
|
}
|
|
}, 16);
|
|
})();
|
|
|