Mit Hilfe von Frames (Rahmen) können Sie den Anzeigebereich des Browsers in verschiedene, frei definierbare Bereiche aufteilen. Jeder Bereich kann eigene Inhalte enthalten. Die einzelnen Anzeigebereiche (also die Frames) können wahlweise einen statischen Inhalt oder einen wechselnden Inhalt haben. Verweise in einem Frame können Dateien aufrufen, die dann in einem anderen Frame angezeigt werden.
Frames werden ab Netscape 2.0 und ab MS Internet Explorer 3.0 unterstützt. Seit HTML 4.0 gehören die Frames auch zum offiziellen HTML-Standard.
Diese Abbildung zeigt ein typisches Frameset, bestehend aus zwei horizontalen und einem vertikalen Frame. Die Verweise links und oben bleiben beispielsweise immer eingeblendet, während sich der Inhalt des Hauptfensters je nach ausgewähltem Verweis ändern kann. Dabei werden im Beispiel der Abbildung immer drei verschiedene HTML-Dateien gleichzeitig angezeigt: links und oben immer die gleiche Datei, im Hauptfenster jeweils eine wechselnde Datei, je nach ausgewähltem Verweis.
<html> <head> <title>Seiten-Titel</title> </head> <frameset...> ... Frame-Definitionen ... </frameset> <body> alternativer Text, wenn der Browser keine Frames kennt </body> </html>
Beim Definieren von Frame-Sets bestimmen Sie, wie das Anzeigefenster aufgeteilt werden soll. Dabei müssen Sie sich das Anzeigefenster wie den leeren Rahmen einer Tabelle vorstellen. Damit die Tabelle Gestalt annimmt, müssen Sie zunächst Reihen und Spalten definieren.
Die Massangaben können bei der Definition von Framesets auf verschiedene Weise erfolgen:
Ein Frameset können Sie immer nur nach Reihen oder Spalten aufteilen. Wenn Sie jedoch Ihren Bildschirm nach Reihen und Spalten aufteilen möchten, müssen Sie mehrere Framsets verschachteln.
Bei solchen Aufteilungen müssen Sie zunächst das gesamte Fenster im Auge behalten. Dieses Fenster wird im Beispiel zunächst in zwei Spalten aufgeteilt. Die rechte der beiden Spalten wird dann in zwei Reihen aufgeteilt. Deshalb wird zunächst die Spaltenaufteilung definiert, nämlich mit der Angabe cols="40%,60%". Statt aber einfach zwei Frames zu definieren, wird anstelle des zweiten Frames ein untergeordnetes Frame-Set definiert, das den rechten Anzeigebereich mit rows="20%,80%" in zwei Reihen aufteilt.
Mit dem Frameset haben wir zunächst nur die Struktur der Frames bestimmt. Als nächstes müssen die Frames definiert werden.
Mit <frame src="Dateiname"> definieren Sie innerhalb eines Frame-Sets den Inhalt des bzw. der zugehörigen Frames. Diese source ist die Datei, die beim Aufruf des Frames als erstes geladen wird.
Da Sie innerhalb von Framesets meist mit Verweisen (Links) arbeiten, ist es unumgänglich, den jeweiligen Frames einen eindeutigen Namen zu vergeben, über welchen sie angesprochen werden können. Dies geschieht mit dem Befehl name="..."
Angenommen, im oberen Beispiel befindet sich im linken Frame die Navigation Ihrer Homepage, die Inhalte der jeweiligen Seiten werden im 3.Frame ausgegeben. Wenn Sie diesem 3.Frame beispielsweise den Namen <name="Ausgabe"> geben, kann dieses Fenster über den Verweis <a href="seitexy.htm" target="Ausgabe"> angesprochen werden.
Sie können das Aussehen Ihrer Frames in weiteren Details bestimmen:
frameborder= [1/0 oder yes/no] bedeutet nach Microsoft-Syntax die Angabe, ob 3D-Rahmen angezeigt werden sollen oder nicht. framespacing= [Pixel] ist Microsoft-Syntax und bestimmt den Abstand zwischen Frame-Fenstern, also die Breite der Rahmen in Pixel.
Unter Berücksichtigung aller Attribute könnte die Framedefinition unseres obigen Beispiels dann so aussehen:
<frameset cols="40%,60%"> <frame src="verweise.htm" name="Navigation" noresize border="0" frameborder="no" scrolling="no"> <frameset rows="20%,80%"> <frame src="titel.htm" name="Titel" noresize border="0" frameborder="no"> <frame src="control.htm" name="Ausgabe"> </frameset> </frameset>
Wem dies alles zu kompliziert erscheint, aber trotzdem nicht auf Frames verzichten will, dem steht unser Frame-o-mat zur Verfügung, mit dessen Hilfe Sie Ihr Frameset automatisch erzeugen lassen können.
Eine Frage, die im Zusammenhang mit Frames häufig gestellt wird ist, wie man verschiedene Fenster über Links anspricht.Hierfür ist das Attribut target bestimmt, welches man dem <A HREF> hinzufügt.
Im Beispiel weiter oben haben wir ein Frameset definiert, das einen Titelframe, einen Navigationsframe sowie einen Frame, der die ausgewählten Seiten anzeigen soll, enthält. Diesem Ausgabeframe haben wir mit name="Ausgabe" einen eindeutigen Namen zugewiesen.
Im Navigationsframe soll ein Link enthalten sein, der die Seite 'Hilfe.htm' im Ausgabeframe anzeigen soll. Demzufolge lautet der Link:
<A HREF="Hilfe.htm" TARGET="Ausgabe">Hilfe</A>
Dasselbe Prinzip wird verwendet, wenn sich Seiten in neuen Fenstern öffnen sollen. Hierzu verwendet man TARGET="_blank".
Targetnamen, die mit einem Unterstrich beginnen, sind reservierte Bezeichner, diese Namen sollten nicht für individuelle Frame-/Fensternamen verwendet werden.
Reservierte Bezeichner: _blank: Seite öffnet sich in neuem Standard- Fenster. _self: Seite öffnet sich in dem Fenster, in welchem der Aufruf erfolgt. _top: Seite öffnet sich im obersten Fenster der Frameset- Hierarchie, ein bestehendes Frameset wird aufgelöst.
Achten Sie darauf, dass Sie die Frame-/Fensternamen richtig schreiben und auf die Gross-/Kleinschreibweise achten, denn wenn ein Browser das ihm zugewiesene Fenster nicht findet, wird er zwangsläufig ein neues Fenster öffnen, ein Umstand, der besonders bei Anfängern oft zu Verwirrung führt. ;-)