Am Anfang des Design steht eine Linie...   webdesign » Javascript Tipps » Div-Layer manipulieren

Grundlage für viele Dhtml-Effekte ist die Manipulation von Div-Layern, also positionierten Containern. Insbesondere bei Netscape 4x sind Layer oder positionierte Divs die wichtigste Möglichkeit, Inhalte dynamisch zu verändern.

Der Zugriff auf Div-Layern ist nicht für alle Browser gleich. Als einziger Browser kennt Netscape 4 das layer-object. Beim Internet Explorer 4 hingegen erfolgt der Zugriff auf Html-Elemente über das all-object. Moderne Browser wie Mozilla, Opera 7 oder Internet Explorer ab 5 nutzen dazu die Methoden des Document Object Model (DOM). Diese Unterschiede müssen bei der Programmierung berücksichtigt werden.

Es ist daher sinnvoll, zunächst eine Funktionen zu schreiben, die nach Übergabe der ID die Referenzierung erledigt. Mit if-else Bedingungen wird geprüft, welche Objekte/Methoden dem Browser bekannt sind. Der entsprechende Zweig wird ausgeführt. Dort wird dann lediglich die als Parameter übergebene id eingesetzt, und die passende Referenzierung per return zurückgegeben. Damit kann anschliessend weitergearbeitet werden.

  // Funktion zur Referenzierung von Div-Layern
  function div_ref (id) {
    if      (document.layers)         return document.layers[id];         // NC 4
    else if (document.all)            return document.all[id];            // IE 4
    else if (document.getElementById) return document.getElementById(id); // DOM
    else                              return null;        
  }

Da häufig die CSS-Eigenschaften des Div-Layers manipuliert werden sollen, lohnt es sich, eine leicht modifizierte Variante zu schreiben, bei der gleich style angehängt wird. Das Unterobjekt style repräsentiert bei IE 4 und Dom-Browsern die Stilvorlage (CSS), und wird benötigt, um CSS-Eigenschaften zu verändern.

  // Funktion zur Referenzierung von Div-Layern mit Zugriff auf CSS-Eigenschaften
  function div_ref_style (id) {
    if      (document.layers)         return document.layers[id];              
    else if (document.all)            return document.all[id].style;           
    else if (document.getElementById) return document.getElementById(id).style;
    else                              return null;        
  }

Soll jetzt beispielsweise die Y-Position eines Div-Layers mit der ID "myLayer" verändert werden, reicht eine Zeile für die entsprechende Aweisung. Da top eine CSS-Eigenschaft ist, kommt die Funktion div_ref_style zum Einsatz:

  div_ref_style("myLayer").top =  100;

An dieser Stelle sei auf einen Fallstrick hingewiesen: sofern - W3C-konform - das Doctype gesetzt ist, verlangen manche Browser den Wert als String mit Einheit! Damit kann aber z. B. NC 4 nicht umgehen. Eine kleine Abfrage kann das Problem wie folgt lösen:

  div_ref_style("myLayer").top =  100 + (document.documentElement? "px" : "");

Die Fragezeichenkonstruktion stellt eine verkürzte if-else Abfrage dar: vor dem Fragezeichen steht die Bedingung, dahinter die Werte für erfüllt und nicht erfüllt, getrennt durch den Doppelpunkt. Fuer alle DOM-fähigen Browser wird also "px" angehängt.

Genauso einfach kann man die Hintergrundfarbe eines Div-layers verändern. Zu beachten ist hierbei, daß die CSS-Eigenschaft "Hintergrundfarbe" im NC 4 abweichen angesprochen wird, daher wird zunächst die unterschiedliche Syntax in einer Variablen abgelegt.

  var bgC                       =  document.layers? 'bgColor' : 'backgroundColor';
  div_ref_style("myLayer")[bgC] =  "red";

Zum Schluß noch eine Funktion, die das Zeigen und Verstecken von Div-Layern erledigt:

  function show_hide(id,stat) {
    div_ref_style(id).visibility =  stat? "visible" : "hidden";
  }

Zwei Parameter werden übergeben, die bekannte Div-Layer ID und der Status, der entscheidet, ob der Div-Layer gezeigt oder versteckt wird. Als Status können die boolschen Werte true und false, oder einfach 1 und 0 übergeben werde. Der Aufruf lautet also:

  show_hide("myLayer",1) // zeigen
  show_hide("myLayer",0) // verstecken

Beispiel downloaden und ausprobieren



digitales tagebuch von kamera grafik design
home
kamera
grafikdesign
webdesign
kgde
kamera
CAD/CAM Mäuse
Nymphenburg
Digitales Tagebuch
Filme
grafikdesign
Städtetheater
Flyer Technik-Camps
Illustration
Broschüren & Folder
webdesign
Referenzen
Javascript Tipps
kgde
Kontakt & Impressum
Technische Hinweise