Mit Frameset eine Webseite in mehrere Fenster (Frames) aufteilen

Fenster mit Frameset aufteilen

Webseiten werden häufig in verschiedene Bereiche aufgeteilt. Eine klassische Aufteilung erfolgt mit der Trennung von Navigation und Inhalt. Zusätzlich werden meistens Bereiche für den Header und Footer benötigt.

In der Anfangszeit des Internets erfolgte die Aufteilung häufig über sogenannte Framesets. Das sind zunächst einmal Seiten, ohne nennenswerten Inhalt. Denn, inhaltlich wird mit einem Frameset nämlich nur die Aufteilung der Seite festgelegt. Die Aufteilung erfolgt dabei so, dass man auf andere Seiten verweist. Der Verweis auf die übrigen Seiten erfolgt über den FRAMESET-Tag. Die Seiten, auf die verwiesen wird, bleiben jedoch eigenständige Dateien.

Wenn man z.B. die Startseite index.html mit Framesets in die Bereiche Navigation und Inhalt aufteilt, dann kann man z.B. eine Fensterbreite für navigation.html und den übrigen Rest für inhalt.html reservieren.

Beim Aufruf der Startseite erhält der Browser zunächst nur die Information über die Aufteilung mit den Fensterbreiten sowie die Information mit dem Verweis auf die Seiten navigation.html und inhalt.html. Diese werden sozusagen nachgeladen und innerhalb der aufgeteilten Bereiche angezeigt. Bei so einer Konstellation hat man es daher insgesamt mit drei Dateien zu tun. Einmal die Startseite index.html, in der das Frameset definiert wird, dazu die einzelnen Dateien navigation.html und inhalt.html.

Verweis auf Frames

HTML-Code für Frameset

Der HTML-Code, mit dem eine Webseite in mehrere Frames aufgeteilt wird, setzt sich aus zwei Bestandteilen zusammen.

  • FRAMESET-Tag: Damit wird festgelegt, dass die Seite ein Frameset enthält.
  • FRAME-Tag: Damit wird auf die Seiten verwiesen, die in die Frames eingebunden werden.

Der Code, um zunächst ein Frameset zu erstellen, ist somit wie folgt.

<frameset>


</frameset>

Mit dem Frameset-Tag wurde ein Frameset erstellt. Allerdings enthält der Code noch keinerlei Informationen über die Aufteilung. Hierfür wird dem Frameset-Tag das Attribut für Reihen oder Spalten hinzugefügt. In diesem Beispiel wird die Seite in Spalten aufgeteilt. Das Attribut cols="150,*" wird dem öffnenden Frameset-Tag hinzugefügt und der Code wie folgt geändert.

<frameset cols="150,*">


</frameset>

Mit dem Attribut cols="150,*" wird (links beginnend) die Breite für das erste Fenster auf 150 Pixel festgelegt. Die einzelnen Fensterbreiten werden mit einem Komma getrennt geschrieben. Ein Stern bedeutet in etwa "alles was übrig bleibt", sozusagen der Rest. Cols ist das Schlüsselwort für die Aufteilung in Spalten. Man könnte die Aufteilung auch in Reihen vornehmen. Hierfür bräuchte man lediglich cols gegen rows auszutauschen, z.B. in der Form rows="150,*".

Zum Schluss müssen noch die Verweise auf die Einzelseiten mit dem FRAME-Tag eingefügt werden. Der Beispielcode wäre daher wie folgt zu ändern, um auf die Seiten navigation.html und inhalt.html zu verweisen.

<frameset cols="150,*">
  <frame src="navigation.html" name="navigation">
  <frame src="startseite.html" name="startseite">
</frameset>

Mit dem Befehl <frame src="navigation.html" name="navigation"> wird angegeben, dass die Seite navigation.html in das erste Frame geladen werden soll. Die Reihenfolge ist hierbei entscheidend, welche Seite in welches Frame geladen wird. Dem Frame-Tag wurde das Attribut name="navigation" zugewiesen. Der Name eines Frames ist wichtig bei Hyperlinks, die man auf den Seiten setzt. Bei Hyperlinks kann nämlich der Name des Fensters angegeben werden, in dem eine Seite geöffnet werden soll.

In der nächsten Zeile wurde mit <frame src="inhalt.html" name="inhalt"> auf die Seite inhalt.html verwiesen, die der Reihenfolge entsprechend in das zweite Frame eingebunden wird. Wurde die Seite mit dem Frameset erstellt und gespeichert und ruft man die Webseite im Browser auf, sollten die Seiten, auf die verwiesen wird, in den Bereichen angezeigt werden.

Frames mit HTML5 und in der Praxis

Frames waren in Fachkreisen schon immer kritisiert worden, weil sie gewisse Nachteile mit sich bringen. Zum einen ist die höhere Ladezeit zu beachten, die durch das Nachladen der Seiten entsteht. Auch wurden Frames deshalb kritisiert, weil einige Suchmaschinen Probleme hatten, eine Webseite mit Frames richtig einzuordnen, da eine Seite mit einem Frameset im Grunde ohne Inhalt ist und nur Verweise auf andere Seiten enthält. Bei manchen Browsern hatte man sogar Probleme, Frames überhaupt anzuzeigen. Es gibt zwar Möglichkeiten, auch auf Seiten mit Framesets Inhalte unterzubringen, so dass sie von Suchmaschinen oder von Browsern ohne Frame-Unterstützung gelesen werden können. Allerdings hätte das zur Folge, dass man die Seiten praktisch doppelt pflegen muss. Wegen diesen und einigen weiteren Gründen wurden Framesets mit HTML5 als Standard entfernt und es wird von W3C empfohlen, Framesets nicht zu verwenden. Es ist sozusagen ein Auslaufmodell bzw. ein Relikt aus einer Zeit, in der man noch nicht wusste, in welche Richtung sich Webseiten entwickeln werden.