template

Index :: Javascript :: Buch-Layout

Ein virtuelles Buch bietet speziell im Homepage-Bereich die reizvolle gestalterische Möglichkeit, dem Besucher das Gefühl zu vermitteln, in einem realen Druckwerk zu schmökern. Dabei sind allerdings auch manche Kompromisse einzugehen, vor allem, wenn sich die Simulation eng an die Wirklichkeit anlehnen soll.


Allgemein

Bei der vorliegenden Variante verwenden wir eine HTML-Seite, in der 2 nebeneinanderliegende Frames (IFRAMEs) eingebettet sind. In diesen Frames werden die eigentlichen Dokumentseiten dargestellt.
Im Vergleich zu den üblichen Browser-Seiten gibt es bei einem traditionellen Buch eine Reihe von Unterschieden:

Grafischer Aufbau

Zur Positionierung der Elemente verwenden wir eine blinde Tabelle, die auch allgemeine Kopf- und Fußbereiche für unsere Dokumentseiten berücksichtigt:
Zellenstruktur Mit Grafik Optisches Ergebnis
Ecke Rand   Rand Ecke
Rand Kopf Falz Kopf Rand
Frame



Frame



Fuß Fuß
Ecke Rand   Rand Ecke
Kopf Kopf
Frame



Frame



Fuß Fuß
Titel  
Text



 



- 2 - - 3 -
Das hier benutzte Farbschema beinhaltet warme Brauntöne, um den Effekt vergilbter Seiten hervorzurufen.
Bildschirm Hintergrund    #B67A46
Buchseiten Hintergrund    #E9D9A8
Buchseiten Text    #48301C
Tab-Reiter Hintergrund    #CEA458
Tab-Reiter Text    #4A5245

Die Lesezeichen für Index und weitere Hauptmenüpunkte bestehen aus individuellen Bildern, die in der linken Randzelle der Buchtabelle untergebracht sind. Ebenso können Tab-Reiter in den oberen Randzellen untergebracht werden.

Verwendete Grafiken

buobli.jpgEcke oben links
buobre.jpgEcke oben rechts
buunli.jpgEcke unten links
buunre.jpgEcke unten rechts
buob.jpgRand oben (Hintergrund)
buun.jpgRand unten (Hintergrund)
buli.jpgRand links (Hintergrund)
bure.jpgRand rechts (Hintergrund)
buobmi.jpgFalz oben
bumi.jpgFalz (Hintergrund)
buunmi.jpgFalz unten
butab.jpgVorlage für Tab-Reiter

Kapiteltypen

Betrachtet man die typischen Inhalte einer Homepage, so lassen sich hinsichtlich eines Buches grob 3 strukturelle Typen erkennen:

Seitenorganisation

Um die Pflege der Buchseiten zu erleichtern, empfiehlt sich bei der Namenswahl für die einzelnen Dokumente ein Nummernsystem, so dass anhand des Dateinamens eine schnelle Identifikation möglich ist. Ein weiterer Vorteil besteht natürlich in der einfacheren Generierung solcher Dateinamen seitens Javascript.

Hier wurde folgende Syntax definiert:
p<Kapitelnummer>_<Seitennummer>.html
Oder, falls sich die Seite in einem Unterkapitel befindet:
p<Kapitelnummer>_<Unterkapitelnummer>_<Seitennummer>.html

Ein paar allgemeine Regeln:

Funktionen

Die essentiellen Funktionen zum Laden und Anzeigen von Buchseiten befinden sich im Header des Hauptskripts (hier index.html) dessen HTML-Bereich auch die beiden IFrames (namentlich if0 und if1) enthält. Alle Steuerungsanweisungen, die innerhalb von Dokumentseiten erfolgen, werden zu diesem Hauptskript durchgereicht - auf diese Weise bleibt der Mechanismus zentral pfleg- und erweiterbar.

Funktionen :: Code im Hauptskript

Das allgemeine Laden eines Dokuments in einen Frame wird von der Funktion SetPag() erledigt; sie erwartet mindestens einen Parameter, nämlich den Index 0 (für den linken Frame) oder 1 (für den rechten Frame). Optional können noch ein zweiter und auch ein dritter Parameter angegeben werden, die dann als Seitennummer - respektive Unterkapitelnummer und Seitennummer - in den Dateinamen mit einfließen.
Ist lediglich der Frameindex angegeben, dann wird hier die Leerseite p0.html geladen.
function SetPag(i) { var s,a=arguments;
  switch (a.length) {
    case 1: s='0'; break;
    case 2: s=Kap+'_'+a[1]; break;
    case 3: s=Kap+'_'+a[1]+'_'+a[2];
  } frames['if'+i].location='p'+s+'.html';
}
Wie man sieht, erfolgt keine explizite Angabe einer Kapitelnummer; diese wird vielmehr der globalen Variablen Kap entnommen.

Um das Kapitel zu wechseln, ist die Funktion SetKap() zu benutzen, die als Parameter eine Kapitelnummer verlangt. Nach Aktualisierung der Tab-Reiter-Grafiken, d.h. Wiedereinblenden des alten Tabs und Ausblenden des neuen Tabs, werden standardmäßig die Seiten 0 und 1 des neuen Kapitels geladen. Ebenso wird der Titel des Kapitels, der im globalen Array KapTit[] hinterlegt ist, über der linken Seite eingeblendet.
function SetKap(k) {
  if (k!=Kap) {
    $('iKap'+Kap).style.visibility='visible';
    $('iKap'+(Kap=k)).style.visibility='hidden';
  } SetTit(0,KapTit[Kap]); SetPag(0,0); SetPag(1,1); }
}
Die Anzeige eines Titels im Seitenkopf übernimmt die Funktion SetTit(), der man den Frameindex sowie den optionalen Titel-String übergibt. Ist kein Titel angegeben, dann wird ein nobreak-space geschrieben:
function SetTit(i,t) {
  $('tdTit'+i).firstChild.data=t?t:'\xA0';
}

Funktionen :: Code in Dokumentseiten

Beim Anklicken von Vorschau-Elementen in Bildergalerien o.Ä. soll das entsprechende Dokument in den rechten Frame geladen werden. Hierzu dient die Funktion SetPgR(), welche als Parameter die Seitennummer erwartet. Optional kann vor der Seitennummer noch eine Unterkapitelnummer angegeben werden:
function SetPgR() { var p=parent,a=arguments;
  if (a.length==1) p.SetPag(1,a[0]); else p.SetPag(1,a[0],a[1]);
}
Das Hauptverzeichnis p0_0.html des Buches enthält Verweise zum Öffnen der verschiedenen Kapitel. Auch dies wird direkt zum Hauptskript weitergeleitet:
function SetKap(k) { parent.SetKap(k); }

Quellcode

CSS im Header
BODY {BACKGROUND:#B67A46;COLOR:#48301C;}
Javascript im Header
function $(id) { return document.getElementById(id); } //---- book
Weiter unten, im BODY, das Buch:
Javascript zur Initialisierung:
<SCRIPT type='text/javascript'>SetKap(0);</SCRIPT>

Index :: Javascript


template