MediaWiki:Schnee.js

Aus DarkfleetWiki
Wechseln zu: Navigation, Suche
Hinweis
Nach dem Speichern sollte zunächst der Browser-Cache geleert werden, bevor man die Auswirkungen der Änderung sehen kann.
  • Mozilla/Firefox/Safari: Strg + R (Mactaste + R bei Macintosh) drücken
  • Konqueror: F5 drücken
  • Opera: kompletten Cache unter Extras → Internetspuren löschen → Individuelle Auswahl leeren
  • Internet Explorer/Chrome: Strg + F5


 
////////////////////////////////////////////////////////////////////////
// SnowFlakes-Script (c) 2009, Dominik Scholz / go4u.de Webdesign
////////////////////////////////////////////////////////////////////////

// amount of snow flakes
	var snow_amount = 50;
// colors of snowflakes
	var snow_color = new Array('#AAAACC', '#DDDDFF', '#CCCCDD', '#F3F3F3', '#F0FFFF');
// fonts to be used for snowflakes
	var snow_type = new Array('Arial Black', 'Arial Narrow', 'Times', 'Comic Sans MS');
// char used for snowflakes
	var snow_char = '❄';
// vertical snowflakes speed
	var snow_speed = 2.4;
// timeout for animation
	var snow_timeout = 50;
// maximum size of snowflakes
	var snow_maxsize = 22;
// minimum size of snowflakes
	var snow_minsize = 8;
// maximal drift in each direction (left/right)
	var snow_drift = 15;

////////////////////// don't edit below this line //////////////////////
var snow_flakes = new Array();
var snow_body_width = 0;
var snow_body_height = 0;
var snow_resizing = false;
var snow_range = snow_maxsize - snow_minsize;
var snow_eventHandlerResize = window.onresize;
var snow_eventHandlerLoad = window.onload;

// register window resize event
window.onresize = snow_resize;
window.onload = snow_start;

// start snow
function snow_start()
{
	if (snow_eventHandlerLoad != null) snow_eventHandlerLoad();

	// init window size
	snow_window_size();

	// add new flakes
	while (snow_amount > snow_flakes.length)
		snow_flake_create(snow_flakes.length);

	// start to move snow
	snow_move();
}


////////////////////////////// functions ///////////////////////////////

// creates a new snowflake
function snow_flake_create(i)
{
	// select body tag
	var insertBody = document.getElementsByTagName('body')[0];

	// create span child for flake
	var insertFlake = document.createElement('div');
	insertFlake.id             = 'flake'+i;
	insertFlake.style.position = 'absolute';
	insertFlake.style.left     = '0px';
	insertFlake.style.top      = '-'+snow_maxsize+'px';
	insertFlake.style.zIndex   = 20000;
	insertFlake.style['user-select'] = 'none';
	insertFlake.innerHTML      = snow_char;
	insertBody.appendChild(insertFlake);

	// create array element
	snow_flakes[i]       = new Array();
	snow_flakes[i].x     = snow_random(snow_body_width-2*snow_drift-snow_maxsize-3) + snow_drift+1;
	snow_flakes[i].y     = -snow_maxsize-snow_random(snow_body_height);
	snow_flakes[i].size  = snow_random(snow_range) + snow_minsize;
	snow_flakes[i].count = snow_random(10000);
	insertFlake.style.color = snow_color[snow_random(snow_color.length-1)];
	insertFlake.style.family = snow_type[snow_random(snow_type.length-1)];
	insertFlake.style.fontSize = (snow_random(snow_range)+snow_minsize)+"px";
}

// restarts an existing snow flake
function snow_flake_restart(i)
{
	snow_flakes[i]       = new Array();
	snow_flakes[i].x     = snow_random(snow_body_width-2*snow_drift-snow_maxsize-3) + snow_drift+1;
	snow_flakes[i].y     = -snow_maxsize;
	snow_flakes[i].size  = snow_random(snow_range) + snow_minsize;
	snow_flakes[i].count = 0;
}

// move existing flakes
function snow_move()
{

	for (i=0; i<snow_flakes.length; i++)
	{
		var flake = document.getElementById('flake'+i);

		// restart existing flake
		if ((snow_flakes[i].y + snow_flakes[i].size + 20) >= snow_body_height)
			snow_flake_restart(i);

		snow_flakes[i].count++;
		snow_flakes[i].y += snow_speed;

		x = snow_flakes[i].x + Math.sin(snow_flakes[i].count / snow_flakes[i].size) * 15;
		y = snow_flakes[i].y;

		
		flake.style.left = x + 'px';
		flake.style.top  = y + 'px';
	}

	// do it again
	window.setTimeout('snow_move();', snow_timeout);
}

function snow_random(range)
{
    return Math.floor(Math.random() * range);
}

function snow_window_size()
{
	// save old width
	var old_width = snow_body_width;

	// get new width
    snow_body_width = document.body.clientWidth - snow_maxsize - 20;
    snow_body_height = document.body.clientHeight;
	if ((window.innerHeight) && (window.innerHeight > snow_body_height))
		snow_body_height = window.innerHeight;
	else if ((document.body && document.body.offsetHeight) && (document.body.offsetHeight > snow_body_height))
    	snow_body_height = document.body.offsetHeight;

	// calculate correction ratio
	var ratio = snow_body_width / old_width;
		
	// for all flakes
	for (i=0; i<snow_flakes.length; i++)
	{
		var flake = document.getElementById('flake'+i);

		// do width correction
		snow_flakes[i].x *= ratio;
		
		// restart existing flake
		if ((snow_flakes[i].y + snow_flakes[i].size + 20) >= snow_body_height)
			snow_flake_restart(i);
	}
}

// handle resize event
function snow_resize()
{
	if (snow_eventHandlerResize != null) snow_eventHandlerResize();
	snow_window_size();
}