Romain-Rolland-Gymnasium Dresden, Kurs Neue Medien (2013)
Frames
Mit einem Frameset wird eine HTML-Seite in mehrere Bereiche (Frames) unterteilt. Jeder Bereich wird durch eine eigene HTML-Datei beschrieben.
Beispiel:
Die RoRo-Homepage besteht aus dem Kopf (oben), der Navigationsspalte (links) und dem Hauptfenster. Einige Hauptfenster-Inhalte bestehen aus weiteren Frames.
Prinzipiell sind Frames nur in Form von Zeilen (also übereinander) oder Spalten (nebeneinander) möglich. Allerdings kann man Framesets ineinander schachteln. Die Struktur sollte vorher genau durchdacht sein.
- Die Seite wird übersichtlich gestaltet.
- Gleich bleibende Teile müssen nicht jedes Mal neu geladen werden.
- Orientierung ist besser möglich.
- Die Breite der Frames kann flexibel oder variabel sein. Dadurch lassen sich unterschiedlich von der Bildschirmauflösung einzelne Frames in einer genau definierten Größe aufbauen - hoffentlich. Das Aussehen der Seite lässt sich so (etwas) besser vorhersagen. Das ist auch der Grund dafür, warum viele Internetseiten dreispaltig aufgebaut sind: Der mittlere Bereich ist das Hauptfenster, der rechte Teil fungiert als Puffer mit variabler Breite.
- Drucken Sie mal eine Seite mit Frames aus und Sie vergeuden viel Papier. Jeder Teil wird nämlich auf einer eigenen Seite ausgedruckt. Meist brauchen Sie nur eine. Wer bescheid weiß, klickt mit rechts auf den gewünschten Frame und zeigt diesen in einem separaten Fenster an.
- Blinde können sich die Seite vom Computer vorlesen lassen. Frames sind hier aber sehr problematisch.
- Alte Browser sollen Schwierigkeiten mit der Darstellung von Frames haben. Auch auf einem Handy wird eine Seite mit Frames oft problematisch sein. Zur Lösung dieses Problems kann man die Seite zweimal schreiben: Einmal mit und einmal ohne Frames. Das macht aber Arbeit und lässt sich oft auch nicht 1:1 umsetzen.
- Auch neue Browser zeigen Framesets unterschiedlich an. Besonders die Abstände und Zwischenräume haben verschiedene Abmessungen. Zumindest teilweise kann man das durch konkrete Attribute beheben. Lesen Sie dazu bei SELFHTML nach.
- Wenn eine Suchmaschine Ihre Seite findet, wird sie oft nur den Teil indizieren, der die gewünschte Information enthält. Der Zusammenhang mit den anderen Inhalten und die Navigationsmöglichkeiten sind damit nicht gegeben. Oft liest man deshalb Links wie zur Startseite oder Wenn diese Seite ohne Frames dargestellt wird, klicken Sie bitte hier.
Statt mit Frames können Sie auch eine Tabelle einfügen. Allerdings verlängert sich die Ladezeit und die Seite wird vollständig neu geladen, wenn Sie einen Link anklicken. Auch mit Abschnitten <p> und CSS können Sie den Text in Blöcken oder Spalten anordnen.
Aufbau einer Seite mit Frames:
Schauen wir uns ein mit dem HTML-Konstruktor erzeugtes Beispiel (Frame 03) an, das sich auch anpassen lässt:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Beispiel für Frames</title>
<meta name="author" content="Gb">
<meta name="editor" content="html-editor phase 5">
</head>
Bis hier war alles normal. Jetzt folgt aber (noch) kein <body>
<frameset rows="90px,*" cols="*" frameborder="1" border="1" framespacing="0"
>
Hier wurde ein Frameset aus zwei Zeilen ("rows") definiert. Die erste Zeile ist 90 Pixel hoch, der darunter liegende Rahmen hat beliebige Höhe also den Rest des Fensters. Was die restlichen Parameter bedeuten und welche es noch so gibt, lesen Sie bitte bei SelfHTML nach. Für manche Frames ist es beispielsweise sinnvoll, Bildlaufleisten zu verbieten.
<frame name="oben" src="oben.html">
In dieser Zeile wurde der obere Frame beschrieben. Er erhielt den Namen oben. In diesem Teil des Fensters wird die Datei oben.html angezeigt.
Wenn Sie sich fragen, wozu der Frame einen Namen braucht: Wenn Sie einen Link anklicken, wird dieser im selben Frame geöffnet. Bei der Navigation wäre das aber blöd. Glücklicherweise kann man im <a>-Tag mit target="rechts" auch andere Frames als Fenster für die Verknüpfung angeben.
In der nächsten Zeile wird folgerichtig der untere Bereich beschrieben, welcher selbst wieder ein Frameset ist:
<frameset cols="15%,*" frameborder="1" border="1" framespacing="0">
Diesmal sind zwei Spalten nebeneinander. Die erste Spalte nimmt 15% des Fensters ein, die andere den Rest. Selbstverständlich sind auch mehr als zwei Zeilen oder Spalten möglich. Hören Sie erst auf, wenn Sie genug haben.
Die folgenden zwei Zeilen beschreiben diese zwei Fenster genauer:
<frame name="links" src="links.html">
<frame name="main" src="main.html">
Das sollte klar sein. Und jetzt wird durch
</frameset>
klar gemacht, dass damit wirklich Schluss mit dem (inneren) Frameset ist.
<noframes>
<body>
</body>
</noframes>
</frameset>
Letzteres bezog sich auf das äußere Frameset.
</html>
Fertig!