//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, [email protected] // 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;}