SHOW:
|
|
- or go back to the newest paste.
1 | //Snow - http://www.btinternet.com/~kurt.grigg/javascript | |
2 | ||
3 | if ((document.getElementById) && | |
4 | window.addEventListener || window.attachEvent){ | |
5 | ||
6 | (function(){ | |
7 | ||
8 | //Configure here. | |
9 | ||
10 | - | var num = 30; //Number of flakes |
10 | + | var num = 130; //Number of flakes |
11 | - | var timer = 30; //setTimeout speed. Varies on different comps |
11 | + | var timer = 40; //setTimeout speed. Varies on different comps |
12 | var enableinNS6 = 1 //Enable script in NS6/Mozilla? Snow animation could be slow in those browsers. (1=yes, 0=no). | |
13 | ||
14 | //End. | |
15 | ||
16 | var y = []; | |
17 | var x = []; | |
18 | var fall = []; | |
19 | var theFlakes = []; | |
20 | var sfs = []; | |
21 | var step = []; | |
22 | var currStep = []; | |
23 | var h,w,r; | |
24 | var d = document; | |
25 | var pix = "px"; | |
26 | var domWw = (typeof window.innerWidth == "number"); | |
27 | var domSy = (typeof window.pageYOffset == "number"); | |
28 | var idx = d.getElementsByTagName('div').length; | |
29 | ||
30 | if (d.documentElement.style && | |
31 | typeof d.documentElement.style.MozOpacity == "string") | |
32 | num = 12; | |
33 | ||
34 | for (i = 0; i < num; i++){ | |
35 | sfs[i] = Math.round(1 + Math.random() * 1); | |
36 | ||
37 | document.write('<div id="flake'+(idx+i)+'" style="position:absolute;top:0px;left:0px;width:' | |
38 | +sfs[i]+'px;height:'+sfs[i]+'px;background-color:#ffffff;font-size:'+sfs[i]+'px"><\/div>'); | |
39 | ||
40 | currStep[i] = 0; | |
41 | fall[i] = (sfs[i] == 1)? | |
42 | Math.round(2 + Math.random() * 2): Math.round(3 + Math.random() * 2); | |
43 | step[i] = (sfs[i] == 1)? | |
44 | 0.05 + Math.random() * 0.1 : 0.05 + Math.random() * 0.05 ; | |
45 | } | |
46 | ||
47 | ||
48 | if (domWw) r = window; | |
49 | else{ | |
50 | if (d.documentElement && | |
51 | typeof d.documentElement.clientWidth == "number" && | |
52 | d.documentElement.clientWidth != 0) | |
53 | r = d.documentElement; | |
54 | else{ | |
55 | if (d.body && | |
56 | typeof d.body.clientWidth == "number") | |
57 | r = d.body; | |
58 | } | |
59 | } | |
60 | ||
61 | ||
62 | function winsize(){ | |
63 | var oh,sy,ow,sx,rh,rw; | |
64 | if (domWw){ | |
65 | if (d.documentElement && d.defaultView && | |
66 | typeof d.defaultView.scrollMaxY == "number"){ | |
67 | oh = d.documentElement.offsetHeight; | |
68 | sy = d.defaultView.scrollMaxY; | |
69 | ow = d.documentElement.offsetWidth; | |
70 | sx = d.defaultView.scrollMaxX; | |
71 | rh = oh-sy; | |
72 | rw = ow-sx; | |
73 | } | |
74 | else{ | |
75 | rh = r.innerHeight; | |
76 | rw = r.innerWidth; | |
77 | } | |
78 | h = rh - 2; | |
79 | w = rw - 2; | |
80 | } | |
81 | else{ | |
82 | h = r.clientHeight - 2; | |
83 | w = r.clientWidth - 2; | |
84 | } | |
85 | } | |
86 | ||
87 | ||
88 | function scrl(yx){ | |
89 | var y,x; | |
90 | if (domSy){ | |
91 | y = r.pageYOffset; | |
92 | x = r.pageXOffset; | |
93 | } | |
94 | else{ | |
95 | y = r.scrollTop; | |
96 | x = r.scrollLeft; | |
97 | } | |
98 | return (yx == 0)?y:x; | |
99 | } | |
100 | ||
101 | ||
102 | function snow(){ | |
103 | var dy,dx; | |
104 | ||
105 | for (i = 0; i < num; i++){ | |
106 | dy = fall[i]; | |
107 | dx = fall[i] * Math.cos(currStep[i]); | |
108 | ||
109 | y[i]+=dy; | |
110 | x[i]+=dx; | |
111 | ||
112 | if (x[i] >= w || y[i] >= h){ | |
113 | y[i] = -10; | |
114 | x[i] = Math.round(Math.random() * w); | |
115 | fall[i] = (sfs[i] == 1)? | |
116 | Math.round(2 + Math.random() * 2): Math.round(3 + Math.random() * 2); | |
117 | step[i] = (sfs[i] == 1)? | |
118 | 0.05 + Math.random() * 0.1 : 0.05 + Math.random() * 0.05 ; | |
119 | } | |
120 | ||
121 | theFlakes[i].top = y[i] + scrl(0) + pix; | |
122 | theFlakes[i].left = x[i] + scrl(1) + pix; | |
123 | ||
124 | currStep[i]+=step[i]; | |
125 | } | |
126 | setTimeout(snow,timer); | |
127 | } | |
128 | ||
129 | ||
130 | function init(){ | |
131 | winsize(); | |
132 | for (i = 0; i < num; i++){ | |
133 | theFlakes[i] = document.getElementById("flake"+(idx+i)).style; | |
134 | y[i] = Math.round(Math.random()*h); | |
135 | x[i] = Math.round(Math.random()*w); | |
136 | } | |
137 | snow(); | |
138 | } | |
139 | ||
140 | ||
141 | if (window.addEventListener){ | |
142 | window.addEventListener("resize",winsize,false); | |
143 | window.addEventListener("load",init,false); | |
144 | } | |
145 | else if (window.attachEvent){ | |
146 | window.attachEvent("onresize",winsize); | |
147 | window.attachEvent("onload",init); | |
148 | } | |
149 | ||
150 | })(); | |
151 | }//End. |