# Schnee, der liegen bleibt



## nordi (4. Dezember 2005)

Hi,

wenn man nach Javascripts googelt, die so kleine gif-bildchen als Schnee runterrieseln lässt, findet man massig. Kennt ihr ein Script, wo der Schnee am Bildschirmende liegenbleibt? Wäre eigentlich ganz nett!

Grüße aus Köln

Marius


----------



## SilentWarrior (4. Dezember 2005)

Äh … dann wird doch irgendwann der ganze Anzeigebereich zugeschneit und der Besucher sieht die Seite gar nicht mehr.


----------



## con-f-use (4. Dezember 2005)

Ich möchte darauf hinweisen, dass wir keine Auskunft oder Scriptdatenbank sind.

 Was du suchst wirst du sicher eher dort finden als hier. Wenn du auch dort nichts findest musst du dir ein bestehendes Script anpassen. Dabei können wir dir aber auch nicht helfen, ohne dass du dir vorher ein geeignetes Script zum anpassen suchst, es in den Grundzügen verstehen lernst und erstmal selber versuchst es anzupassen.

   Hast du das getan und kommst nicht weiter, dann poste bitte dein konkretes Problem hier rein. Alles andere ist sinnloser Spam.


----------



## Siege (4. Dezember 2005)

Ich würde mal sagen das ganze sieht auch nicht umbedingt gut aus. Denn die Schneeflocken werden einfach nur übereinander gestapelt!?

Außer man könnte vielleicht eine Grenze machen aber irgendwann hast du 700 kleine Gif Bildchen und die Seite wird immer langsamer.


----------



## con-f-use (4. Dezember 2005)

Man könnte die gif-Bildchen nach ner Zeit verschwinden lassen. Das beseitigst schonmal die Performance-Probleme. Unten blendet man einfach die ganze Zeit ein schönes Bildchen von einer Schneefläche ein. Das geht allerdings nur mit Browsern, die postiton:fixed unterstützen, denn sonst sähe das ganze aus, wie mein pseudo "fixierter Layer".


----------



## nordi (5. Dezember 2005)

Unnötiger Spam? Was soll das bedeuten? Dann sind fast 80 % der Einträge hier Spam 

Zum Thema "zuschneien" und Performance - das ist mir jetzt nicht so wichtig. Soll nur als kleiner Weihnachtsscherz rüberkommen.

Also ich hab das Script hier genommen:


```
var SNOW_Picture = "img/schnee1.gif";
var SNOW_no = 25; // Wieviel soll es schneien
var SNOW_browser_IE_NS = (document.body.clientHeight) ? 1 : 0;
var SNOW_browser_MOZ = (self.innerWidth) ? 1 : 0;

var SNOW_Time;
var SNOW_dx, SNOW_xp, SNOW_yp;
var SNOW_am, SNOW_stx, SNOW_sty; 
var i, SNOW_Browser_Width, SNOW_Browser_Height;

if (SNOW_browser_IE_NS)
{
	SNOW_Browser_Width = document.body.clientWidth;
	SNOW_Browser_Height = document.body.clientHeight;
}
else if (SNOW_browser_MOZ)
{
	SNOW_Browser_Width = self.innerWidth - 20;
	SNOW_Browser_Height = self.innerHeight;
}

SNOW_dx = new Array();
SNOW_xp = new Array();
SNOW_yp = new Array();
SNOW_am = new Array();
SNOW_stx = new Array();
SNOW_sty = new Array();

for (i = 0; i < SNOW_no; ++ i) 
{ 
	SNOW_dx[i] = 0; 
	SNOW_xp[i] = Math.random()*(SNOW_Browser_Width-50);
	SNOW_yp[i] = Math.random()*SNOW_Browser_Height;
	SNOW_am[i] = Math.random()*20; 
	SNOW_stx[i] = 0.02 + Math.random()/10;
	SNOW_sty[i] = 0.7 + Math.random();
	if (i == 0) document.write("<\div id=\"SNOW_flake"+ i +"\" style=\"position: absolute; z-index: "+ i +"; visibility: visible; top: 15px; left: 15px;\"><a href=\"http://www.peters1.dk\" target=\"_blank\"><\img src=\""+SNOW_Picture+"\" border=\"0\"></a><\/div>");
	else document.write("<\div id=\"SNOW_flake"+ i +"\" style=\"position: absolute; z-index: "+ i +"; visibility: visible; top: 15px; left: 15px;\"><\img src=\""+SNOW_Picture+"\" border=\"0\"><\/div>");
}

function SNOW_Weather() 
{ 

for (i = 0; i < SNOW_no; ++ i) 
{ 
	SNOW_yp[i] += SNOW_sty[i];

	if (SNOW_yp[i] > SNOW_Browser_Height-50) 
	{
		SNOW_xp[i] = Math.random()*(SNOW_Browser_Width-SNOW_am[i]-30);
		SNOW_yp[i] = 0;
		SNOW_stx[i] = 0.02 + Math.random()/10;
		SNOW_sty[i] = 0.7 + Math.random();
	}

	SNOW_dx[i] += SNOW_stx[i];

	document.getElementById("SNOW_flake"+i).style.top=SNOW_yp[i]+"px";
	document.getElementById("SNOW_flake"+i).style.left=SNOW_xp[i] + SNOW_am[i]*Math.sin(SNOW_dx[i])+"px";
}

SNOW_Time = setTimeout("SNOW_Weather()", 10);

}

SNOW_Weather();
```

Angucken könnt ihr euch das mit diesem Link. Ist dieses Script anpassungsfähig. Den Ansatz mit dem fixierten Layern finde ich garnicht mal so schlecht. Kann man das damit machen?


----------



## con-f-use (5. Dezember 2005)

Es sind auch 80% der Beiträge hier als Spam zu bezeichnen, weil die meisten die hier neu sind und Posten meinen, wir würde ihre Arbeit übernehmen und sie könnten sich zurücklenen. Aber für Arbeit, die ein anderer für einen macht zahlt man normalerweise Geld. Daher helfen wir hier nur Leuten sich dann selbst zu helfen und schreiben selten Scripte für sie dirket (um), sondern sagen höchstens, wie sie es machen können. Und das tu ich jetzt mal:

 In dem vorliegen Fall sorgt die if-Anweinsung in der Funktion SNOW_Weather() dafür, dass die Schneeflocke wieder an eine zufällige Stelle nach oben kommt, wenn sie unten angekommen ist. Jetzt musst du einfach noch innerhalb dieser if-Anweinsung ein Duplikat der Schneeflocke erstellen, das dann liegen bleiben soll. Am besten machst du das mit cloneNode(), appenChild(), setAttribute('id',null). Bitte bei selfhtml nachschauen, wenn du die Funktionen noch nicht kennst. Indem du die id auf den leeren Wert setzt verhinderst du, das eine Id zwei mal vorkommt und außerdem, dass sich das Duplikat der Schneeflocke durch die SNOW_Weather()-Funktion bewegt, wie die anderen. Achte auch darauf, das du das Duplikat erstellst und einhängst, bever durch die Anweisungen in der if-Anweisung die eigentliche Schneeflocke wieder oben platziert wird, sonst sammeln sich logischerweise die Schneeflocken oben.


----------

