21.
Vorhang auf! (06.02.2000)
Wie wäre es mit einem sich beim Laden einer neuen HTML-Seite öffnenden "Vorhang"? Die Realisierung eines derartigen Effekts ist relativ einfach.
Die Grundidee besteht darin, über die zu ladende Seite zunächst zwei (farbige) DIVs zu legen, die den sichtbaren Fensterbereich vollständig abdecken, d. h. ihre
Breite entspricht der halben Fensterbreite und ihre Höhe der Fensterhöhe. Beim Laden der darunter liegenden Seite wird dann eine JavaScript-Funktion gestartet,
die die Breite der beiden DIVs um einen bestimmten Betrag – im Beispiel 5 Pixel – reduziert, bis von den DIVs praktisch nichts mehr übrig ist und die eigentliche
Seite in voller Pracht vorliegt.
Das folgende Beispiel 21 wurde für den Internet Explorer sowie Netscape 6 / Mozilla realisiert, da diese der Größenveränderung von DIVs wesentlich freundlicher gesinnt ist als
die Netscape 4.x-Browser. Letztere lassen keine auf eine bestimmte Höhe bzw. Breite festgelegten DIVs ohne Inhalt zu. Das ließe sich zwar mit transparenten Grafiken
bzw. Layer-Background-Tricks kompensieren, wobei man allerdings schnell auf ein neues Problem stößt: Netscape 4.x verweigert die dynamische Veränderung der Breite bzw. Höhe eines Bildes
und auch der sog. Resize-Bug dürfte den Spaß erheblich trüben.
In einem Initialisierungsschritt wird also zuerst die Fensterhöhe / -breite abgefragt:
// Abfrage der inneren Fenstergrößen
// IE
fbreite=document.body.clientWidth;
fhoehe=document.body.clientHeight;
// NN 6 / Mozilla
fbreite=self.innerWidth;
fhoehe=self.innerHeight;
// Variablendefinitionen
// xlw: Breite des linken DIVs, xrw: Breite des rechten DIVs,
// xr: x-Koordinate des rechten DIVs, step: Schrittweite in Pixel
// Objektvariablen l und r
step=5;
xlw=fbreite/2;
xrw=fbreite/2;
xr=fbreite/2;
// Setzen der DIV-Höhen / -Breiten
// IE
l=document.all["vorhangl"].style;
r=document.all["vorhangr"].style;
l.height=fhoehe;
r.height=fhoehe;
l.width=fbreite/2;
r.width=fbreite/2;
// NN 6 / Mozilla
l=document.getElementById("vorhangl").style
r=document.getElementById("vorhangr").style
l.height=fhoehe;
r.height=fhoehe;
l.width=fbreite/2;
r.width=fbreite/2;
Für den eigentlichen "Vorhangeffekt" ist die Funktion VorhangAuf() zuständig. Diese steuert die Verkleinerung der DIV-Breiten und sorgt dafür,
dass die x-Koordinate der rechten Vorhanghälfte entsprechend der Verkleinerungs-Schrittweite (Variable step) nach rechts verschoben wird:
function VorhangAuf()
{
xlw=xlw-step;
xrw=xrw-step;
xr=xr+step;
if (document.all)
{
l.width=xlw;
r.width=xrw;
r.left=xr;
if ((xlw>step) || (xrw>step))
{
setTimeout("VorhangAuf()",100);
}
if (xlw<=step)
{
l.height=0;
l.left=0;
l.visibility="hidden";
}
if (xrw<=step)
{
r.height=0;
r.left=0;
r.visibility="hidden";
}
}
if (document.getElementById && !document.all)
{
l.width=xlw;
r.width=xrw;
r.left=xr;
if ((xlw>step) || (xrw>step))
{
setTimeout("VorhangAuf()",100);
}
if (xlw<=step)
{
l.height=0;
l.left=0;
l.visibility="hidden";
}
if (xrw<=step)
{
r.height=0;
r.left=0;
r.visibility="hidden";
}
}
}
Damit nach dem Erreichen der maximalen Verkleinerung der DIVs keine sichtbaren Reste zurückbleiben, werden diese einfach auf unsichtbar
gesetzt und somit ist nur noch die neue Seite zu sehen. Das dargestellte Prinzip bietet noch viel Spielraum für eigene Erweiterungen,
z.B. die Einbindung von Grafiken in die DIV-Container.
|