Movatterモバイル変換


[0]ホーム

URL:


Rheinwerk Computing< openbook >Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einleitung
2 Webbrowser
3 JavaScript einbauen
4 Programmieren mit JavaScript
5 Datum
6 Zufall
7 Browserinformationen
8 Fenster
9 Formulare
10 Frames und Iframes
11 Grafiken
12 Cookies
13 Objekte und Arrays
14 Ereignisbehandlung
15 Fehlerbehandlung
16 DOM
17 DHTML und CSS
18 AJAX
19 XML
20 Web Services
21 AJAX-Frameworks
22 Plugins
23 Multimedia
24 Java
25 Serverseitige Technologien
26 JavaScript goes .NET
27 Code schützen
28 Top Secret: Passwortschutz
29 Signierte Skripte
30 JavaScript und Sicherheit
31 Navigation
32 Warenkorb
33 JavaScript-Bibliotheken
34 Referenz
35 Quellen im Web
36 Die Zukunft von JavaScript
Index
Ihre Meinung?

 <<   zurück
JavaScript und AJAX von Christian Wenz
Das umfassende Handbuch
Buch: JavaScript und AJAX

JavaScript und AJAX
839 S., mit DVD, 39,90 Euro
Rheinwerk Computing
ISBN 3-89842-859-1
gpKapitel31 Navigation
 gp31.1 Navigation mit Pulldown-Menüs
 gp31.2 Navigation mit DHTML
  gp31.2.1 Baumstrukturen
 gp31.3 Alternativen im Web
  gp31.3.1 Joust
  gp31.3.2 Weitere Ansätze


Rheinwerk Computing

31.2 Navigation mit DHTML downtop

Auch wenn DHTML eigentlich nichts weiter als ein hässliches Kunstwort ist, haben Sie mit dieser Technik auch in Sachen Navigation erweiterte Möglichkeiten.

Im World Wide Web gibt es eine Reihe von DHTML-Skripten, die teilweise unglaublich ausgefeilt sind. Dennoch wollen wir es uns nicht nehmen lassen, hier einen eigenen Ansatz vorzustellen.

Es ist klar, dass unser eigener Ansatz sich nicht mit den Top-Skripten aus dem Web messen kann, das ist auch gar nicht unsere Absicht. Eines der Hauptziele dieses Buches ist es ja, dass Sie Werkzeuge für Ihre Arbeit erhalten und dabei auch noch etwas lernen. Und allein schon die technischen Hintergründe, wie so eine DHTML-Navigation technisch realisiert werden kann, sind sehr lehrreich. Betrachten Sie also die folgenden Skripten nicht als Nonplusultra, sondern als voll funktionsfähigen Ansatz, den Sie einsetzen oder auch entsprechend erweitern können.


Rheinwerk Computing

31.2.1 Baumstrukturen toptop

Benutzer des Windows Explorer (Start NAusführen NExplorer) oder ähnlicher grafischer Dateibrowser kennen die Baumansicht ihres Produkts: Sie sehen zunächst nur eine Liste der Laufwerke. Auf Klick öffnen sich die einzelnen Unterordner. Ersetzen Sie »Laufwerke« durch »Kategorien« und »Unterordner« durch »Unterpunkte«, und Sie haben das Beispiel aus dem vorangegangenen Abschnitt.

Mit JavaScript und DHTML lässt sich das relativ einfach nachbilden. Der Vorteil: Wenn anfangs nur die Oberkategorien angezeigt werden, ist die Anzeige sehr platzsparend.

Die folgende Lösung geht davon aus, dass sich die Navigation in einem Frame befindet und die Inhaltsseiten in einem anderen Frame namens »Inhalt« angezeigt werden sollen. Ein mögliches Frameset sieht dann folgendermaßen aus:

<html><head><title>Navigation</title><frameset cols="150,*">  <framesrc="navigationsframe.html" />  <frame src=""name="Inhalt" /></frameset></html>

Die Dateinavigationsframe.html enthält zunächst die Ober- und (ein wenig eingerückt) die Unterpunkte. Die einzelnen Oberpunkte sind in<div>-Elemente eingeschlossen, ebenfalls die jeweiligen Gruppen aus Unterpunkten. So ist es möglich, die einzelnen Elemente nach Bedarf ein- und auszublenden.

Nach einem Mausklick auf die Oberpunkte muss eine Funktion aufgerufen werden, die den entsprechenden Unterpunkt sichtbar oder unsichtbar macht.

<div><a href="#"onclick="toggle(1); return false;">Browserhersteller deutsch</a></div><div>&nbsp;&nbsp;<small>  <a href="http://www.microsoft.de/"target="Inhalt">Microsoft</a><br /></small>&nbsp;&nbsp;<small>  <a href="http://www.firefox-browser.de/"target="Inhalt">Firefox</a><br></small></div><div><a href="#"onclick="toggle(2); return false;">Browserhersteller englisch</a></div><div>&nbsp;&nbsp;<small>  <a href="http://www.microsoft.com/"target="Inhalt">Microsoft</a><br /></small>&nbsp;&nbsp;<small>  <a href="http://www.mozilla.com/"target="Inhalt">Netscape</a><br /></small>&nbsp;&nbsp;<small>  <a href="http://www.opera.com/"target="Inhalt">Opera</a><br /></small></div>

Beachten Sie die halbfett hervorgehobenen Elemente in diesem HTML-Code:

gp Die<div>-Elemente der Oberkategorien tragen den NamenoberX, wobeiX für die laufende Nummer steht (1, 2, ...).
gp Die<div>-Elemente der Unterpunkte tragen den NamenunterX, wobeiX für die laufende Nummer der zugehörigen Oberkategorie steht.
gp Bei einem Klick auf einen Kategorienamen wird die Funktiontoggle() aufgerufen und als Parameter die Nummer der entsprechenden Kategorie übergeben. In der Funktiontoggle() muss dann die Sichtbarkeit des Menüs gesetzt werden – entweder auf sichtbar oder auf unsichtbar.
function toggle(nr) {   var stil = document.getElementById("unter"+nr).style;   var v = stil.visibility;   if (v == "hidden" || v == "hide") {      stil.visibility = "visible";   } else {      stil.visibility = "hidden";   }   ausgeben();}
Die Funktionausgeben() zeichnet die Menüpunkte neu.
gp Alle HTML-Links werden im Frame"Inhalt" geöffnet.

Kommen wir zur Funktionausgeben(). Der Status quo ist folgender:

gp Alle Oberpunkte sind sichtbar und müssen angezeigt werden.
gp Nicht alle Unterpunkte sind sichtbar.
gp Die Anordnung der einzelnen Elemente ist nicht korrekt.

In der Funktionausgeben() müssen die einzelnen Elemente korrekt untereinander angeordnet werden. Die horizontale Position ist immer gleich, denn wir haben ja alle Unterpunkte durch&nbsp;&nbsp; ein wenig eingerückt. Lediglich die vertikale Position muss bestimmt werden.

Der folgende Algorithmus weist allen<div>-Elementen ihre korrekte Position zu:

gp Der erste Oberpunkt wird ausgegeben.
gp Die Höhe des ersten Oberpunktes wird ermittelt (mitparseInt(document.getElementById("unter"+nr).style.height)). Sie gibt an, um wie viel tiefer der nächste Punkt ausgegeben werden muss.
gp Wenn die ersten Unterpunkte sichtbar sind, werden diese ausgegeben, und ihre Höhe wird noch zu der Höhe des ersten Oberpunktes hinzuaddiert, um die Position für die nächsten Punkte zu ermitteln.
gp Wenn die ersten Unterpunkte nicht sichtbar sind, werden die zweiten Oberpunkte an die korrekte Stelle verschoben und wird deren Höhe hinzuaddiert.
gp Das Ganze wird für alle Ober- und Unterpunkte so ausgeführt, bis alle Elemente korrekt platziert worden sind.

Zum Start verwenden wir die folgenden Konstanten:

gp Alle Punkte sind um zehn Pixel eingerückt.
gp Der Abstand des obersten Punkts zum Start der Seite beträgt 50 Pixel.

Die Funktionausgeben() ist dann recht schnell erstellt (unter Zuhilfenahme der Hilfsfunktiondhtml_moveTo()):

function dhtml_moveTo(id, x, y) {   var stil = document.getElementById(id).style;   if (document.all) {      stil.posLeft = y + "px";      stil.posTop = y + "px";   } else {      stil.left = x + "px";      stil.top = y + "px";   }}function ausgeben() {   var y = 50;  // Startwert   var nr = 1;   while (document.getElementById("ober" + nr)) {      var oberstil = document.getElementById("ober"+nr).style;      var unterstil = document.getElementById("unter"+nr).style;      dhtml_moveTo("ober" + nr, 10, y); // Oberpunkt      y += parseInt(oberstil.height);      if (unterstil.visibility == "visible"||         unterstil.visibility == "show") {         dhtml_moveTo("unter" + nr, 10, y);  // Unterpunkt         y += parseInt(unterstil.height);      }      nr ++;   }}

Nachfolgend finden Sie noch einmal den kompletten Code mit allen HTML-Elementen und JavaScript-Funktionen. Beachten Sie, wie wieder einmal dank der Ausgliederung von Kernfunktionalitäten recht mächtiger Code in recht wenigen Zeilen erstellt werden konnte.

<html><head><title>Navigation</title><script type="text/javascript"><!--function dhtml_moveTo(id, x, y) {   var stil = document.getElementById(id).style;   if (document.all) {      stil.posLeft = y + "px";      stil.posTop = y + "px";   } else {      stil.left = x + "px";      stil.top = y + "px";   }}function toggle(nr) {   var stil = document.getElementById("unter"+nr).style;   var v = stil.visibility;   if (v == "hidden" || v == "hide") {      stil.visibility = "visible";   } else {      stil.visibility = "hidden";   }   ausgeben();}function ausgeben() {   var y = 50;  // Startwert   var nr = 1;   while (document.getElementById("ober" + nr)) {      var oberstil = document.getElementById("ober"+nr).style;      var unterstil = document.getElementById("unter"+nr).style;      dhtml_moveTo("ober" + nr, 10, y); // Oberpunkt      y += parseInt(oberstil.height);      if (unterstil.visibility == "visible"||         unterstil.visibility == "show") {         dhtml_moveTo("unter" + nr, 10, y);  // Unterpunkt         y += parseInt(unterstil.height);      }      nr ++;   }}function init() {var nr = 1;while (document.getElementById("unter" + nr)) {document.getElementById("unter" + nr).stil.visibility ="hidden"; nr ++;}ausgeben();}//--></script></head><bodyonload="init();"><div><a href="#">Browserher-steller deutsch</a></div><div>&nbsp;&nbsp;<small>   <a href="http://www.microsoft.de/"     >Microsoft</a><br /></small>&nbsp;&nbsp;<small>   <a href="http://www.firefox-browser.de/"     >Firefox</a><br /></small></div><div><a href="#">Browserher-steller englisch</a></div><div>&nbsp;&nbsp;<small>   <a href="http://www.microsoft.com/"     >Microsoft</a><br /></small>&nbsp;&nbsp;<small>   <a href="http://www.mozilla.com/"     >Mozilla</a><br /></small>&nbsp;&nbsp;<small>   <a href="http://www.opera.com/"     >Opera</a><br /></small></div></body></html>

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 31.3    Links die DHTML-Navigation, rechts die geladene Webseite

Beachten Sie, dass nach dem vollständigen Laden der HTML-Seite die folgenden zwei Dinge geschehen:

gp Alle Unterpunkte werden unsichtbar gemacht.
gp Die Funktionausgeben() wird aufgerufen, um die Elemente erstmalig zu positionieren. Damit ersparen wir uns die Positionierungsangaben überstyle="..." oder<style>...</style>.
 <<   zurück
  
 Zum Rheinwerk-Shop
Neuauflage: JavaScript
Neuauflage: JavaScript
bestellen
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: jQuery






 jQuery


Zum Rheinwerk-Shop: Einstieg in JavaScript






 Einstieg in JavaScript


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Suchmaschinen-Optimierung






 Suchmaschinen-
 Optimierung


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen |Datenschutz |Impressum

Rheinwerk Verlag, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77,service@rheinwerk-verlag.de

Cookie-Einstellungen ändern



[8]ページ先頭

©2009-2025 Movatter.jp