pragmaMx Support Forum

pragmaMx => Allgemeines => Thema gestartet von: Didi am 19 Dezember 2004, 13:48:22

Titel: Schneefall auf der Seite?
Beitrag von: Didi am 19 Dezember 2004, 13:48:22
Hat jemand ein Script, mit dem man es schneien lassen kann auf der Seite?!? Vielleicht mit kurzer Erklärung in welche Datei das Script eingefügt werden sollte!
Danke!
Titel: Re: Schneefall auf der Seite?
Beitrag von: jubilee am 19 Dezember 2004, 14:03:46
Hallo !
Das musst Du mit Javascript machen :
Zitat
<script language="JavaScript">
var snowsrc="snow.gif"
var no = 10;

var ns4 = (document.layers) ? 1 : 0;
var ie = (document.all ) ? 1 : 0;
var dom = (document.getElementById && !document.all) ? 1 : 0;

var dx, xp, yp;
var am, stx, sty;
var i;
var doc_width = screen.availWidth;
var doc_height = screen.availHeight;


if (ns4)
{ doc_width = self.innerWidth;
doc_height = self.innerHeight; }
else if (ie)
{ doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight; }
else if (dom)
{ doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight; }


dx = new Array();
xp = new Array();
yp = new Array();
am = new Array();
stx = new Array();
sty = new Array();

for (i = 0; i < no; ++ i)
{
dx = 0;
xp = Math.random()*(doc_width-50);
yp = Math.random()*doc_height;
am = Math.random()*20;
stx = 0.02 + Math.random()/10;
sty = 0.7 + Math.random();

if (ns4)
{
if (i == 0)
{ document.write("<layer name='dot"+ i +"' left='-20' top='-20' visibility='show'><img src='"+snowsrc+"' border='0'></layer>"); }
else
{ document.write("<layer name='dot"+ i +"' left='-20' top='-20' visibility='show'><img src='"+snowsrc+"' border='0'></layer>"); }
}
else if (ie)
{
if (i == 0)
{ document.write("<div id='dot"+ i +"' style='position:absolute; z-index:"+ i +"; visibility:visible; top:-20px; left:-20px;'><img src='"+snowsrc+"' border='0'></div>"); }
else
{ document.write("<div id='dot"+ i +"' style='position:absolute; z-index:"+ i +"; visibility:visible; top:-20px; left:-20px;'><img src='"+snowsrc+"' border='0'></div>"); }
}
else if (dom)
{
if (i == 0)
{ document.write("<div id='dot"+ i +"' style='position:absolute; z-index:"+ i +"; visibility:visible; top:-20px; left:-20px;'><img src='"+snowsrc+"' border='0'></div>"); }
else
{ document.write("<div id='dot"+ i +"' style='position:absolute; z-index:"+ i +"; visibility:visible; top:-20px; left:-20px;'><img src='"+snowsrc+"' border='0'></div>"); }
}
}

function snowNS4() {
for (i = 0; i < no; ++ i) {
yp += sty;
if (yp > doc_height-50) {
xp = Math.random()*(doc_width-am-30);
yp = 0;
stx = 0.02 + Math.random()/10;
sty = 0.7 + Math.random();
doc_width = self.innerWidth;
doc_height = self.innerHeight;
}
dx += stx;
document.layers["dot"+i].top = yp;
document.layers["dot"+i].left = xp + am*Math.sin(dx);
}
setTimeout("snowNS4()", 10);
}

function snowIE() {
for (i = 0; i < no; ++ i) {
yp += sty;
if (yp > doc_height-50) {
xp = Math.random()*(doc_width-am-30);
yp = 0;
stx = 0.02 + Math.random()/10;
sty = 0.7 + Math.random();
doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight;
}
dx += stx;
document.all["dot"+i].style.pixelTop = yp;
document.all["dot"+i].style.pixelLeft = xp + am*Math.sin(dx);
}
setTimeout("snowIE()", 10);
}

function snowDOM() {
for (i = 0; i < no; ++ i) {
yp += sty;
if (yp > doc_height-50) {
xp = Math.random()*(doc_width-am-30);
yp = 0;
stx = 0.02 + Math.random()/10;
sty = 0.7 + Math.random();
doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight;
}
dx += stx;
document.getElementById("dot"+i).style.top = yp;
document.getElementById("dot"+i).style.left = xp + am*Math.sin(dx);
}
setTimeout("snowDOM()", 10);
}

if (ns4)
{ snowNS4(); }
else if (ie)
{ snowIE(); }
else if (dom)
{ snowDOM(); }

</script>

dazu brauchst Du noch eine Grafik für die Schneeflocke (snow.gif).
Einstellen der Anzahl der Schneeflocken auf der Seite geht mit dem Wert für var no = 10;
Einbinden musst Du das so auf der entsprechenden Seite, das es irgendwo im
Body-Teil der Webseite erscheint (phpBNuke etc... in einem Modul, Block etc.....)
MfG
jubilee
Titel: Re: Schneefall auf der Seite?
Beitrag von: jubilee am 19 Dezember 2004, 14:36:14
BTW hier auch noch eine passende Grafik dazu :

Titel: Re: Schneefall auf der Seite?
Beitrag von: Charan am 19 Dezember 2004, 18:39:32
Hallo,

also wenn ich das Script in einen Block schmeiße, wo kommt denn dann die Schneeflocke hin, bzw. wie findet das Script die Flocke?


Gruß Jochen
Titel: Re: Schneefall auf der Seite?
Beitrag von: jubilee am 19 Dezember 2004, 18:50:28
Hallo !
Zitatalso wenn ich das Script in einen Block schmeiße, wo kommt denn dann die Schneeflocke hin, bzw. wie findet das Script die Flocke?
Wenn Du das Script nicht verändert hast, sollte die Grafik im Portal-Root-Verzeichnis liegen (da wo auch die config.php liegt).
Die Pfadangaben rechnen sich ab dem Portal-root-Verzeichnis
Wenn Du die Grafik z.B. ins images-Verzeichnis legst, dann muss das so aussehen :
Zitatvar snowsrc="images/snow.gif"
etc.. pp....

MfG
jubilee
Titel: Re: Schneefall auf der Seite?
Beitrag von: Charan am 19 Dezember 2004, 19:26:35
Ist ja zum piepsen. Habe das Script in einen Block getan, doch es läuft auf der ganzen Seite.
Eine Esoterik-Seite mit Schneeflocken - kreisch.

Was mache ich falsch?

Gruß Jochen
Titel: Re: Schneefall auf der Seite?
Beitrag von: jubilee am 19 Dezember 2004, 19:35:37
Hallo !
ZitatIst ja zum piepsen. Habe das Script in einen Block getan, doch es läuft auf der ganzen Seite.
Was mache ich falsch?
Öhhh ... gar nix. Das Script zeigt die Flocken auf der ganzen Seite.
Das in den Block packen sorgt nur dafür, das es im Body-Bereich der Seite angezeigt wird.
Begrenzen kannst du es nicht nur auf den Block. Zumindest dieses Script nicht.
Wie du in der initialisierung sehen kannst --->
Zitatif (ns4)
{ doc_width = self.innerWidth;
doc_height = self.innerHeight; }
else if (ie)
{ doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight; }
else if (dom)
{ doc_width = document.body.clientWidth;
doc_height = document.body.clientHeight; }
verwendet das Script immer den vom Clienten sichtbaren Bereich als Ausgabefenster.
Es gibt auch Scriptte die sogeschrieben sind, das sie einen bestimmten Bereich verwenden, da hab ich gerad aber
keines parat.
MfG
jubilee

Titel: Re: Schneefall auf der Seite?
Beitrag von: Regs am 19 Dezember 2004, 20:20:34
Nimm doch für einen Block einfach ein animiertes Schneeflockengif als Hintergrund. http://roflweb.de/modules.php?name=coppermine&file=displayimage&album=219&cat=0&pos=5

Oder eine andere, witzige Grafik, z.B so etwas.:
http://roflweb.de/modules.php?name=coppermine&file=displayimage&album=79&cat=0&pos=21
http://roflweb.de/modules.php?name=coppermine&file=displayimage&album=79&cat=0&pos=23
http://cportal-community.de/modules.php?name=coppermine&file=displayimage&album=75&cat=0&pos=46
Titel: Re: Schneefall auf der Seite?
Beitrag von: Didi am 19 Dezember 2004, 22:41:45
Irgendwo im Bodyteil einfügen?
Welche Php kannst Du mir da empfehlen! Die die ich angeschaut habe, haben alle keinen Bodyteil und habe ich das Script in einer html eingefügt tut sich nichts!?!
Titel: Re: Schneefall auf der Seite?
Beitrag von: Didi am 19 Dezember 2004, 22:45:57
Hat sich erledigt, danke, war men Fähler! Es funzt jetzt richtig doll!
Titel: Re: Schneefall auf der Seite?
Beitrag von: schippe001 am 26 Dezember 2004, 01:44:27
Hallo,

habe den schneefall auch auf meiner seite eingebaut. ist echt nett. wie kann ich nun die flocken langsamer fallen lassen?
frohe weihnachten wünscht ...

schippe001
Titel: Re: Schneefall auf der Seite?
Beitrag von: jubilee am 26 Dezember 2004, 10:32:59
Hallo !
Zitat...wie kann ich nun die flocken langsamer fallen lassen...
Dazu änderst du in den 3 Funktionen
function snowDOM()
function snowIE()
function snowNS4()
die folgende Zeile ab
Zitatsty = 0.7 + Math.random();
in dieser zeile den (initial-)Wert anpassen
z.B. für langsameres fallen
Zitatsty = 0.1 + Math.random();
Und das dann in allen 3 Funktionen dementsprechend anpassen.
MfG
jubilee