//Notice how some of the images are repeated? That's handy for increasing the frequency of some types of snow flakes.
//And, here's the source:
// jSnow, a jQuery Plugin v1.1.mod1
// Licensed under GPL licenses.
// Copyright (C) 2009 Nikos "DuMmWiaM" Kontis, dummwiam@gmail.com
// http://www.DuMmWiaM.com/jSnow
// Modified 2009~
(function ($) {
$.fn.jSnow = function (h) {
var j = $.extend({},
$.fn.jSnow.defaults, h);
var k, WIN_HEIGHT;
setWaH();
var l = j.flakes;
var m = j.flakeCode;
var n = j.flakeColor;
var o = j.flakeMinSize;
var p = j.flakeMaxSize;
var q = j.fallingSpeedMin;
var r = j.fallingSpeedMax;
var s = j.interval;
var t = j.zIndex;
var useGif = false;
var u = $("<div \/>");
u.css({
width: k + "px",
height: 1,
display: "block",
overflow: "visible",
position: "absolute",
top: $("html").scrollTop() + 1 + "px",
left: "1px",
zIndex: t
});
$("body").prepend(u).css({
height: "100%"
});
$("html").css({
"overflow-y": "scroll",
"overflow-x": "hidden"
}); var v = Array();
generateFlake(l, false);
setInterval(animateFlakes, s);
window.onresize = setWaH;
function setWaH() {
k = $('body').width();
WIN_HEIGHT = window.innerHeight || document.documentElement.clientHeight
WIN_HEIGHT -= 50;
};
window.onscroll = function () {
u.css({
top: $("html").scrollTop() + "px"
})
};
function generateFlake(a, b) {
a = a || 1;
b = b || false;
var i = 0;
for (i = 0; i < a; i++) {
var c = $("<span \/>");
var d = o + Math.floor(Math.random() * p);
var e = m[Math.floor(Math.random() * m.length)];
if (e.indexOf(".gif") != -1 || e.indexOf(".png") != -1) {
var f = new Image();
if (useGif)
e = e.replace("png", "gif");
f.src = e;
e = "<img src='" + e + "' alt='jSnowFlake'>"
}
c.html(e).css({
color: n[Math.floor(Math.random() * n.length)],
fontSize: d + "px",
display: "block",
position: "absolute",
cursor: "default",
"z-index": t
});
$(u).append(c);
f_left = Math.floor(Math.random() * (k - c.width() - 50)) + 25;
f_top = (b) ? -1 * c.height() : Math.floor(Math.random() * (WIN_HEIGHT - 50));
var g = Math.floor(Math.random() * 90);
jQuery.data(c, "posData", {
top: f_top,
left: f_left,
rad: Math.random() * 50,
i: Math.ceil(q + Math.random() * (r - q)),
swingRange: g
});
c.css({
top: f_top + "px",
left: f_left + "px"
});
v.push(c)
}
};
function animateFlakes() {
var i = 0;
for (i = v.length - 1; i >= 0; i--) {
var f = v[i];
var a = jQuery.data(f, "posData");
a.top += a.i;
var b = Number();
b = Math.cos((a.rad / 180) * Math.PI);
a.rad += 2;
var X = a.left - b * a.swingRange;
f.css({
top: a.top + "px",
left: X + "px"
});
if (a.top > WIN_HEIGHT) {
jQuery.removeData(f);
f.remove();
v.splice(i, 1);
generateFlake(1, true)
}
}
};
return this
};
$.fn.jSnow.defaults = {
flakes: 30,
fallingSpeedMin: 1,
fallingSpeedMax: 3,
flakeMaxSize: 20,
flakeMinSize: 10,
flakeCode: ["•"],
flakeColor: ["#fff"],
zIndex: "auto",
interval: 50
}
})(jQuery);
$(function() {
$().jSnow({
flakes : 25,
flakeCode : [
//"/img/jsnow/snow.1.png"
'❄', '❄', '*'
],
fallingSpeedMax : 2,
fallingSpeedMin : 0,
zIndex : 65535,
interval : 30
});
});
v.1.1.mod1
body{background: #679; color: #8ac;}