VIII. Frames

Grundlagen
Definition des Framesets
Attribute

1. Grundlagen

Mit Hilfe von Frames können Sie den Anzeigebereich des
Browsers in verschiedene, frei definierbare Segmente aufteilen. Das ist mit den verschiedenen Fenstern vergleichbar, in denen Sie unter Windows arbeiten können. Jedes dieser Segmente kann dabei eigene Inhalte enthalten. Man kann auch festlegen, ob die einzelnen Frames einen statischen oder wechselnden (dynamischen) Inhalt haben sollen. Darüber hinaus können sich Links in dem einen Frame auch auf Dateien beziehen, die in einem anderen Frame angezeigt werden.

Die mittels Frames realisierbare Informationsverteilung auf mehrere, voneinander unabhängige Fenster hat einige Vorteile (z. B bessere Übersichtlichkeit und bessere Benutzerführung), aber auch einige Nachteile. Im folgenden werden die Vor- und Nachteile der Frames aufgelistet. Frames haben mehrere Nachteile:

  • Frames werden nicht von allen WWW-Browsern angezeigt. Falls die gesamte Struktur Ihres Internet-Angebotes auf Frames beruht bzw. davon abhängig ist, können Benutzer mit nicht Frame-tauglichen Browsern große Schwierigkeiten bei der Nutzung des Angebots haben.

  • Bei kleineren Bildschirmen (z.B. auf 14-Zoll-Monitoren) können bei einer Auflösung von 640x480 Pixeln schon zwei Frames die Übersicht sehr beeinträchtigen.

  • Beim Laden des Frames wird die Startadresse des WWW-Angebotes angezeigt. Werden andere Seiten in Unterverzeichnissen danach geladen, bleibt oben im "Location-Feld" nur die Startadresse stehen. Die Folge: der Nutzer bekommt keine direkte Auskunft über die genaue Adresse des aktuellen Dokumentes, was vor allem beim Anlegen von Lesezeichen ( Bookmarks) lästig ist.

Trotz dieser Bedenken bieten Frames aber auch mehrere Vorteile:

  • Sie ermöglichen den schnellen Wechsel zwischen Informationsseiten. Enthält beispielsweise der eine Frame ein umfangreiches Verzeichnis mit Links, werden die jeweiligen Inhalte in einem zweiten Frame angezeigt. Auf diese Weise bleibt das "Inhaltsverzeichnis" jederzeit sichtbar; der Anwender kann jederzeit einen neuen Verweis auswählen. Damit werden Rücksprünge überflüssig und das Angebot gewinnt an Übersichtlichkeit.

  • Vor allem bei umfangreichen Projekten ist es sinnvoll, Verweise zu den vielfältigen Rubriken in einem separaten Frame-Fenster anzubieten. Damit kann der Anwender durch das Informationsangebot navigieren, ohne allzu schnell den Überblick zu verlieren. Bei kleinen Projekten dagegen, die nur aus wenigen Seiten bestehen, wirkt diese Technik übertrieben und vermittelt dem Anwender eine falsche Vorstellung von der Größe des Projekts.

  • Die grafischen Elemente, die im statischen Menü-Frame einmal geladen sind (Logos, Buttons), brauchen nicht als Ballast beim Navigieren mitgeschleppt zu werden. Die Geschwindigkeit, mit der durch ein Informationssystem navigiert werden kann, nimmt dadurch zu.

2. Definition des Framesets

Um mit Frames zu arbeiten, müssen diese zunächst in einem sog. Frame-Set definiert werden. Das sieht folgendermaßen aus:
<html>
<head>
<title>Frame-Test</title>
</head>
<frameset ...>
... Frame-Definitionen ...
</frameset>
<body>
Dieser Text wird angezeigt, wenn der Browser keine Frames kennt
</body>
</html>
Gegenüber der "herkömmlichen"
HTML-Architektur muß bei der Arbeit mit Frames beachtet werden, daß hinter dem abschließenden </head> die Frame-Set-Definition beginnt. Es darf also in der Frameset-Definition kein <body>-Tag enthalten sein. Der Befehl <frameset ...> leitet sie ein. Es folgen die Definitionen der einzelnen Frames oder verschachtelter Frame-Sets. </frameset> schließt die Definition ab.

In der Definition Ihres Frame-Sets legen Sie fest, wie das Anzeigefenster aufgeteilt werden soll. Am besten stellen Sie sich das Fenster wie die Reihen und Spalten einer Tabelle vor; damit sie Gestalt annimmt, müssen die Reihen und Spalten definiert werden, z.B.:

<frameset rows="20%,80%">
Dadurch ergeben sich zwei horizontale Frames
</frameset>

frames1.htm

Der Parameter "rows" legt die Aufteilung in Reihen fest. Das obige Beispiel erzeugt zwei horizontale Frames, von denen der erste die oberen 20% des Anzeigefensters umfaßt und der zweite die übrigen 80%. Die Angaben müssen durch Komma getrennt in Anführungszeichen stehen.

Statt prozentualer Angaben können auch absolute Zahlen verwendet werden. Ein <frameset rows="400, *"> erzeugt ebenfalls zwei horizontale Frames, von denen er erste 400 Pixel hoch ist und der zweite den verbleibenen Rest des Anzeigefensters zugewiesen bekommt. Das * weist einem Frame eine relative Größe zu, die von den Größen der übrigen Frames abhängig ist.

Um vertikale Frames zu erzeugen, müssen Sie den Parameter "cols" einsetzen:

<frameset cols="200,*">
Dadurch ergeben sich zwei vertikale Frames
</frameset>

frames2.htm

Mit dieser Definition erzeugen Sie zwei vertikale Frames, der erste ist 200 Pixel breit, die Größe des zweiten ist von der Größe des Anzeigefensters abhängig. Ansonsten gilt das Gleiche wie beim Parameter "rows".

Natürlich können Sie sowohl vertikale als auch horizontale Frames gleichzeitig verwenden:

<frameset cols="40%,60%">
Zwei vertikale Frames
<frameset rows="20%,80%">
Zwei weitere horizontale Frames
</frameset>
</frameset>

frames3.htm

Bei solchen Aufteilungen muß zunächst das gesamte Anzeigefenster im Auge behalten werden. Im Beispiel wird es zunächst in zwei Spalten geteilt, von denen die rechte anschließend in zwei Reihen aufgeteilt wird. Statt jetzt aber einfach zwei Frames zu definieren, wird anstelle des zweiten Frames ein untergeordnetes Frame-Set definiert, welches den rechten Anzeigebereich mit über die Anweisung rows="20%,80%" in zwei Reihen aufteilt. Ergebnis: es sind drei Frames zu sehen; ein vertikaler und zwei horizontale.

Frame-Sets sollten immer so definiert sein, daß das gesamte Anzeigefenster abgedeckt wird. Verwenden Sie dazu entweder Prozentangaben, die in der Summe 100 ergeben, oder das Sternzeichen *.

Der Titel (<title>...</title>), der in der HTML-Datei mit der Frame-Set-Definition angeben ist, wird während der gesamten Dauer des Frame-Sets angezeigt, auch wenn andere Dateien innerhalb des Frame-Sets aufgerufen werden. Leider gibt es bislang keine Möglichkeit, den Titel zu aktualisieren. Insofern sollte in der Datei, welche die Frame-Set-Definitionen enthält, ein allgemeiner und aussagekräftigen Titel angegeben sein, der für das gesamte Projekt Gültigkeit hat.

Nachdem durch die Definition des Frame-Sets die Bereiche des Anzeigefensters bestimmt worden sind, geben Sie mit der Definition der Frames an, was in den einzelnen Bereichen angezeigt werden soll.

<frameset cols="40%,60%">
<frame src="verweise.html" name="LinkesFenster">
<frameset rows="20%,80%">
<frame src="titel.html" name="HauptFenster">
<frame src="control.html" name="UnteresFenster">
</frameset>
</frameset>
Der Parameter src gibt - wie schon bei der Einbindung von Grafiken - die Quelle wieder, aus der das einzubindende Objekt stammt. Im obigen Beispiel würde also die HTML-Datei verweise.html im linken Frame angezeigt. Jeder Frame besitzt einen Namen, der über den Parameter "name" bestimmt wird. Sowohl "name" als auch "src" müssen in Anführungszeichen stehen.

Der Name eines Frames wird benötigt, um Verweise zu anderen Frames zu definieren. Namen dürfen nicht zu lang sein und nur aus Buchstaben, Ziffern und Unterstrichen bestehen. Die folgende Namen haben eine spezielle Bedeutung und dürfen nicht als normale Fensternamen verwendet werden: _self, _new, _parent und _top. Darauf wird weiter unten noch ausführlich eingegangen.

3. Attribute

Was geschieht nun, wenn in einem Frame mehr Inhalte angezeigt werden sollen, als eigentlich hineinpassen? Wenn der Inhalt größer ist, werden die Frame-Fenster automatisch mit Scrollbalken (Bildlaufleisten) ausgestattet. Sie können jedoch erzwingen, daß ein Frame-Fenster in jedem Fall Scrollbars bzw. keine Scrollbalken hat.
<frameset cols="200,*">
<frame src="verweise.htm" name="links" scrolling=no>
<frame src="titel.htm" name="rechts" scrolling=yes>
</frameset>
Durch die Angabe "scrolling=yes" im Frameset erzwingen Sie, daß das Anzeigefenster des Frames in jedem Fall Scrollbars besitzt, während "scrolling=no" das verhindert. Wenn Sie das Scrollen des Fensterinhalts verhindern, können Inhalte, die größer sind, nicht vollständig angezeigt werden. Deswegen sollte "scrolling=no" nur dann verwendet werden, wenn Sie sicher sind, daß der Fensterinhalt vollständig in das Frame-Fenster paßt. Eine Alternative bietet das Attribut "scrolling=auto". Dann wird der Scrollbalken nur angezeigt, wenn er benötigt wird.

Durch die Angabe "marginwidth=[Pixel]" im Frameset kann der Abstand zwischen rechtem bzw. linkem Fensterrand und dem Fensterinhalt festgelegt werden. "marginheight=[Pixel]" bestimmt den Abstand zwischen oberem bzw. unterem Fensterrand und dem Fensterinhalt (height = Höhe). Linke und rechte Ränder sind immer gleich groß, ebenso obere und untere.

Mit den Angaben marginwidth=0 marginheight=0 sollte der Fensterinhalt exakt in der linken oberen Ecke beginnen. Leider fügt Netscape bei der Anzeige doch immer noch ein Pixel "Seitenrand" ein.

Normalerweise kann der Anwender in einem Frameset die Größe der einzelnen Frames mit der Maus durch "Ziehen" verändern. In vielen Fällen ist das auch sinnvoll, wenn Sie das verhindern wollen, müssen Sie die Angabe "noresize" im Frameset angeben.

MS Internet Explorer und Netscape unterstützen beide ab Version 3.0 Frames ohne sichtbare Fensterrahmen, auch mit flachen Zwischenräumen von frei bestimmbarer Dicke. Bei unsichtbaren Fensterrahmen wirken die Frame-Fenster wie nahtlos aneinander gefügte Flächen am Bildschirm. Leider ist die Syntax dafür noch uneinheitlich, so daß Sie zur Zeit noch mehrere Angaben benötigen, um in beiden Browsern den gewünschten Effekt zu erzielen.

<frameset cols="40%,60%" border=0 frameborder=0 framespacing=0>
<frame src="verweise.htm" name="links">
<frame src="titel.htm" name="rechts">
</frameset>
Die Angaben zur Darstellung der Rahmen werden im einleitenden <frameset>-Tag gesetzt. "border=[Pixel]" ist Netscape-Syntax und bestimmt die Breite der Rahmen in Pixel. Erlaubt sind Zahlenwerte von 0 (keine Rahmen anzeigen) und größer (border = Rahmen). "frameborder=[1/0 oder yes/no]" ist Microsoft-Syntax und bestimmt, ob 3D-Rahmen angezeigt werden sollen oder nicht. "framespacing=[Pixel]" ist Microsoft-Syntax und bestimmt den Abstand zwischen Frame-Fenstern, mithin also die Breite der Rahmen in Pixel (spacing=Abstand). Netscape interpretiert ab Version 3.0 auch farbige Fensterrahmen, z.B. <frameset cols="40%,60%" bordercolor=#FF0000>; die Farkkodierung ist die gleiche wie bei den Hintergrundfarben.

Voraussetzung für Verweise zu anderen Frames ist, daß die Frames eines Sets Namen erhalten haben (s. o.). Damit das Verweisziel in einem anderen Frame-Fenster angezeigt wird, muß zum regulären Link die Angabe TARGET="name" hinzukommen. Hinter "target" steht in Anführungszeichen der Name des Frames, in welchem die Ausgabe erfolgen soll. Der bei "target" angegebene Name muß exakt mit dem Namen übereinstimmen, der bei der Frame-Definition mit NAME="namedesframes" vergeben wurde. Groß- und Kleinschreibung werden dabei unterschieden.

Besondere Namen

  • target="_new"
    bewirkt, daß das Verweisziel in einem neuen Browserfenster angezeigt wird. Das Fenster mit Ihrem Frame-Set bleibt im Hintergrund erhalten. Der Anwender kann auch jederzeit wieder zurück wechseln.

  • target="_parent"
    bewirkt, daß das Verweisziel in dem Zustand des Anzeigefensters angezeigt wird, der vor dem Start Ihres Frame-Sets aktuell war.

  • target="_top"
    bewirkt, daß das Verweisziel in jedem Fall im gesamten Anzeigefenster angezeigt wird.<

Zum Seitenanfang