Dreidimensionale Navigation

Mit folgendem Skript kannst Du erreichen, daß ein einmal geklickter Menüpunkt – speziell bei auf frames basierenden Seiten – hervorgehoben bleibt, bis ein anderer angeklickt wird. Es wird beim Besucher aktiviertes JavaScript vorausgesetzt. Bei deaktiviertem JavaScript funktionieren die Verweise dennoch ganz normal, nur die visuellen Effekte fehlen. Hier das Beispiel zum Testen:

click click click

Bitte den Code nicht aus dem Seitenquelltext kopieren, sondern von unten übernehmen. Damit beim Klicken auf das Beispiel keine Verweise ausgeführt werden, habe ich den Seitenquelltext nämlich verändert!

Erklärung

Mit dem array a_over werden die Bilder festgelegt, die beim mouseover event zu laden sind, dasselbe gilt für die arrays a_click und a_out.

Durch onmouseover="mOver(1)"; wird die Funktion mOver aufgerufen, die abfragt, welche Grafik gerade angewählt ist, und diese anschließend gegen das nächste, im array definierte Bild austauscht.

Sinngemäß geschieht dasselbe bei der Funktion mOut. Lediglich bei der Funktion mClick werden zwei Werte abgefragt: Die derzeit nicht selektierten Grafiken, die beim onclick event auf irgen deinen Button gegen das a_out-Bild ausgetauscht werden, und der selektierte Button, bei dem durch das onclick-Ereignis die Grafik gegen die selektierte ausgetauscht wird. Durch dieses Skript ist es möglich, sehr schöne dreidimensionale Navigationen zu bauen, die sogar den Status der einzelnen Menüpunkte wiedergeben. Nachteil: Es werden pro Link mindestens drei Grafiken benötigt, das sind bei einer Navigation mit 10 Verweisen schon 30 Bilder.

Der Skript-Code

Das folgende Skript kannst Du intern im head oder extern einbinden.

selected=0;
a_over = new Array;
  a_over[1] = new Image;a_over[1].src = "button1-neg.gif";
  a_over[2] = new Image;a_over[2].src = "button2-neg.gif";
  a_over[3] = new Image;a_over[3].src = "button3-neg.gif";
a_click = new Array;
  a_click[1] = new Image;a_click[1].src = "button1-3.gif";
  a_click[2] = new Image;a_click[2].src = "button2-3.gif";
  a_click[3] = new Image;a_click[3].src = "button3-3.gif";
a_out = new Array;
  a_out[1] = new Image;a_out[1].src = "button1-pos.gif";
  a_out[2] = new Image;a_out[2].src = "button2-pos.gif";
  a_out[3] = new Image;a_out[3].src = "button3-pos.gif";
  
function mOver(nr) {
  if(nr!=selected) {
    imgname="button"+nr;
    document.images[imgname].src=a_over[nr].src;
  }
}

function mOut(nr) {
  if(nr!=selected) {
    imgname="button"+nr;
    document.images[imgname].src=a_out[nr].src;
  }
}

function mClick(nr) {
  if(selected!=0) {
    imgname="button"+selected;
    document.images[imgname].src=a_out[selected].src;
  }
  selected=nr;
  imgname="button"+nr;
  document.images[imgname].src=a_click[nr].src;
}

Der Code für die Verweise, die das Skript aufrufen

<a href="#"
   onmouseover="mOver(1);"
   onmouseout="mOut(1);"
   onclick="mClick(1);"><img name="button1"
                             src="button1-pos.gif"
                             style="border:0; width:80px; height:20px;"
                             alt="1" /></a>

<a href="#"
   onmouseover="mOver(2);"
   onmouseout="mOut(2);"
   onclick="mClick(2);"><img name="button2"
                             src="button2-pos.gif"
                             style="border:0; width:80px; height:20px;"
                             alt="2" /></a>

<a href="#"
   onmouseover="mOver(3);"
   onmouseout="mOut(3);"
   onclick="mClick(3);"><img name="button3"
                             src="button3-pos.gif"
                             style="border:0; width:80px; height:20px;"
                             alt="3" /></a>

Dieses Skript ist auch in framesets einsetzbar, die über mehr als einen Navigationsframe verfügen. Eine Demonstration samt Beschreibung wird es hier vielleicht mal geben...

PS: Das Skript stammt in seiner ursprünglichen Version von MADU und wurde von Kurt überarbeitet und ausgebaut. Erfreulicherweise funktioniert es nun auch in Netscape 4.

Viel Spaß!
Jane & Kurt

Angelegt: Vor meiner Zeit
Letzte Bearbeitung: 2005/06/11 / 14:10:55