Logo www.praast.de

html by praast

Frameset, das unbekannte Wesen ;-)

Grundgerüst einer HTML-Datei mit Framesets

Die Einteilung des Anzeigefensters erfolgt über eine spezielle HTML-Datei, eine Indexdatei, die immer als erster Bestandteil eines Projektes mit Frames vom Browser aufgerufen werden muss.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
 <HEAD>
  <TITLE>Frame-Test</TITLE>
 </HEAD>
 <FRAMESET ...>
  <FRAME ...>
  <FRAME ...>
  <NOFRAMES>
  <BODY>
  Dieser Text wird angezeigt, wenn der Browser keine Frames kennt
  (Hier eine alternative Navigation einbauen!)
  </BODY>
  </NOFRAMES>
 </FRAMESET>
</HTML>

Diese Indexdatei enthält lediglich Informationen über die Größe und Position der einzelnen im Anzeigefenster enthaltenen Frames sowie Verweise auf die Frame-Inhalte und eventuell einige optionale Informationen. In die Frames selbst werden die Inhalte mit Verweisen auf gewöhnliche HTML-Dateien geladen.

Der Frameset

  1. Man nennt mehrere zusammengehörende Frames ein Frameset. Dieses Frameset wird in der Indexdatei anstelle des herkömmlichen BODY-Tags in der HTML-Datei verwendet. Der dazu notwendige Frameset-Tag lautet <FRAMESET>.
  2. Zwischen <FRAMESET ...> und </FRAMESET> wird das eigentliche Frame eingeschlossen.

Bei der Definition des Framesets müssen noch genaue Angaben darüber gemacht werden, wie das Anzeigefenster aufgeteilt werden soll. Es müssen je nach Konzept entweder Reihen oder Spalten (Anzahl und Größe) oder auch beides definiert werden. Die Definition der Reihen und Spalten erfolgt als Erweiterung des Frameset-Einleitungs-Tags.

Reihen

Durch die Angabe von Reihen von Reihen im einleitenden Frameset-Tag werden die Zeilen und deren Höhen festgelegt. Die Höhenangaben der einzelnen Zeilen trennst du durch Kommata. Die Anzahl der Angaben bestimmt die Zahl der Frames. Das Attribut ROWS= [Angabe in Prozent] bewirkt die Festlegung der Zeilen.

Beispiel für zwei Reihen:

<FRAMESET ROWS="25%,75%">

Spalten

Die Prozentangaben definieren Verhältnisse, die die einzelnen Frames zueinander haben (also welcher Anteil vom Browserfenster ihnen zugewiesen wird) und nicht einen Faktor von der Größe des Gesamtanzeigefensters vom Browser. Insbesondere müssen die Summen der Prozentangaben nicht 100% ergeben.
Die Angabe <ROWS="50%,50%"> definiert bei identischer Gesamtgröße des Browserfensters die gleiche Fenstergröße der einzelnen Frames wie <ROWS="500%,500%"> oder <ROWS="1%,1%">.

Weitere Möglichkeiten

Achtung! Die Angaben FRAMEBORDER, FRAMESPACING und BORDERCOLOR werden zwar durch gängige Browser umgesetzt, wiedersprechen aber der FRAMESET-Definition in HTML 4.0! Lediglich in den einzelnen FRAMES ist dann FRAMEBORDER erlaubt!

Beachte, dass der Internet-Explorer zum Unterdrücken der Anzeige der Framerahmen zwei Angaben benötigt:
FRAMEBORDER=no FRAMESPACING="0"
(FRAMESPACING ist reine Microsoft-Syntax und nicht im HTML-Standard enthalten!)
wogegen der Netscape sogar drei Angaben benötigt:
BORDER="0" FRAMEBORDER=no FRAMESPACING="0"
(BORDER ist reine Netscape-Syntax und nicht im HTML-Standard enthalten!)

Den Farbwert bei BORDERCOLOR= kannst du in den Farbdefinitionen als Hexadezimalzahl (mit vorangestellten # und ohne "...") ablegen oder direkt als Farbname (mit "...") notieren:
BORDERCOLOR="RED" oder auch BORDERCOLOR="#FF0000"
(BORDERCOLOR ist nicht im HTML-Standard enthalten!)

Farbname Hexadezimal Beispiel-Tabellenzelle
black #000000
maroon #800000
green #008000
olive #808000
navy #000080
purple #800080
teal #008080
gray #808080
silver #C0C0C0
red #FF0000
lime #00FF00
yellow #FFFF00
blue #0000FF
fuchsia #FF00FF
aqua #00FFFF
white #FFFFFF

Der Inhalt von Frames

Der Inhalt von Frames wird bei den Frame-Definitionen festgelegt. mit dem Tag <FRAME SRC="Dateiname.htm"> definierst du innerhalb eines Framesets den Inhalt des (bzw. der) zugehörigen Frames. Mit der Angabe SRC= wird ein Link zum Frame-Inhalt gesetzt, bei dem es sich meist um eine gewöhnliche HTML-Datei handelt. Bei der Adressierung der Dateien, die in einem Frame angezeigt werden sollen, gelten ansonsten die gleichen Regeln wie bei der Referenzierung von normalen HTML-Dokumenten oder etwa Grafiken. Die Frameset-Erweiterung NAME= [Framename] definiert den Namen des Frames und wird mit einem Leerzeichen abgetrennt hinter der Inhaltsangabe angeführt.

Beispiel für eine Index-Datei, die zwei im Verhältnis 1 zu 3 und in Reihen aufgeteilte Frames definiert:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
 <HEAD>
  <TITLE>Frame-Test</TITLE>
 </HEAD>
 <FRAMESET ROWS="25%,75%">
  <FRAME SRC="liste4.htm" NAME="Liste4">
  <FRAME SRC="liste3.htm" NAME="Liste3">
  <NOFRAMES>
  <BODY>
  Dieser Text wird angezeigt, wenn der Browser keine Frames kennt
  </BODY>
  </NOFRAMES>
 </FRAMESET>
</HTML>

Bei der Angabe von mehreren Frame-Inhalten spielt die Reihenfolge der Dateiangaben mit dem SRC-Parameter eine wichtige Rolle. Die erste Angabe wird im ersten Frame, die zweite Datei im zweiten Frame und so fort angezeigt.

Die Verschachtelung von Frames

Wenn ein definiertes Frame nochmals in weitere Frames unterteilt werden soll (so wie bei den meisten), müssen mehrere, verschachtelte Framesets definiert werden. Die Verschachtelung erfolgt hierarchisch. Zuerst wird die äußere Struktur festgelegt. Innerhalb des Frames, in dem die Verschachtelung erfolgen soll, wird ein weiteres Frame definiert, inklusive eigenem Abschluß-Tag. Dabei ist offensichtlich, dass nur eine wechselweise Verschachtelung von Reihen und Spalten Sinn macht.

Beispiel für eine Indexdatei, die ineinander verschachtelte Frame-Strukturen definiert:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
 <HEAD>
  <TITLE>Frame-Test</TITLE>
 </HEAD>
 <FRAMESET ROWS="20%,80%">
  <FRAME SRC="kopf.htm" NAME="Kopf">
  <FRAMESET COLS="90%,10%">
   <FRAME SRC="main.htm" NAME="Inhalt">
   <FRAME SRC="navi.htm"  NAME="Navigation">
  </FRAMESET>
  <NOFRAMES>
  <BODY>
  Dieser Text wird angezeigt, wenn der Browser keine Frames kennt
  </BODY>
  </NOFRAMES>
 </FRAMESET>
</HTML>

Die Anzahl der Verschachtelungsebenen ist theoretisch nur durch die Auflösung des Bildschirm beschränkt, macht aber irgendwann keinen sinn mehr. Außerdem steigt bei einer zu großen Zahl von Frames der Browser aus und meldet entweder einen Fehler oder zeigt nicht mehr korrekt alle Frames an.

Absolutangaben der Framegrößen

Anstelle der Prozentangaben kannst du genausogut absolute Zahlenwerte benutzen.
Beispiel für vier Reihen mit je 50 Pixel: <FRAMESET ROWS="50,50,50,50">
Allerdings wird der Browser diese Angaben wieder relativieren, das heißt, die Frames werden wieder im angegebenen Verhältnis an das Anzeigefenster angepasst. Ansonsten müßte man bei zu großen Anzeigefenstern mit "Löchern" rechnen. Garantiert fragst du dich nun: "Warum dann überhaupt absolute Angaben, wenn sie scheinbar doch relativ sind. Warum so ein Widerspruch?"

Joker

Die Lösung für diesen scheinbaren Widerspruch sind sogenannte Jokerzeichen. In Verbindung mit Jokerzeichen machen diese absolute Größenangaben der Frames Sinn. Im Zusammenhang mit absoluten Zahlenangaben kannst du eine sogenannte Wildcard (oder mehrere) verwenden. So bewirkt z.B. <ROWS="200,*,100"> ein Set, bestehend aus 3 Reihen von Frames, wobei die erste und letzte Zeile jeweils fest definiert sind, während die Höhe der mittleren Reihe, markiert durch das Jokerzeichen STERN (*), variabel ist. Die Größe des mittleren Anzeigefensters wird durch die Größe des Browserfensters bestimmt.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
 <HEAD>
  <TITLE>Frame-Test</TITLE>
 </HEAD>
 <FRAMESET COLS="200,*,200">
  <FRAME SRC="kopf.htm" NAME="Kopf">
  <FRAME SRC="main.htm" NAME="Inhalt">
  <FRAME SRC="navi.htm"  NAME="Navigation">
  <NOFRAMES>
  <BODY>
  Dieser Text wird angezeigt, wenn der Browser keine Frames kennt
  </BODY>
  </NOFRAMES>
 </FRAMESET>
</HTML>

Ebenso kannst du das Jokerzeichen auch bei prozentualen Angaben verwenden. Dort ist aber Vorsicht geboten, da sich dann die Relativbeziehungen von Prozentangaben durch das Jokerzeichen verändern. Eine Angabe <ROWS="20%,20%"> bewirkt ja das gleiche wie <ROWS="10%,10%">. In Verbindung mit dem Jokerzeichen bewirken <ROWS="20%,*,20%"> und <ROWS="10%,*,10%"> bei der gleichen Größe des Browserfensters andere Größenverhältnisse. Richtig Sinn machen Jokerzeichen also meist nur in Verbindung mir absoluten Angaben für die übrigen Frames.

Frame-Eigenschaften festlegen

Wie schon erwähnt ist jedes einzelne Frame in einer übergeordneten Struktur - dem Anzeigefenster des Browsers - eingebettet, aber trotzdem als eigenständiges Fenster mit allen HTML-Darstellungsmöglichkeiten zu sehen. Ein solches Fenster kann neben den unterschiedlichen Inhalten eigene Eigenschaften haben, die sich innerhalb des Gesamtprojektes individuell für jedes einzelne Frame einstellen lassen. Für jedes Frame läßt sich definieren, ob es Scroll-Leisten gibt und wie groß der Mindestabstand zwischen Fensterrahmen und Fensterinhalt ist. Außerdem läßt sich die Größe eines Frames "einfrieren", das heißt, du verhinderst eine (unmittelbare) Veränderung der Größe eines Fensters durch den Besucher.

Mindestabstände festlegen

Zur Festlegung eines Mindestabstandes zwischen Fensterrahmen und Fensterinhalt stehen dir zwei Erweiterungen des <FRAME...>-Tags zur Verfügung:

  1. Mit der Angabe MARGINWIDTH= [Wert] definierst du einen Abstand zwischen Fensterinhalt und dem rechten bzw. linken Fensterrand.
  2. Mit der Angabe MARGINHEIGHT= [Wert] definierst du einen Abstand zwischen Fensterinhalt zum oberen bzw. unteren Rand.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
 <HEAD>
  <TITLE>Frame-Test</TITLE>
 </HEAD>
 <FRAMESET COLS="25%,75%">
  <FRAME SRC="main.htm" NAME="Inhalt" MARGINWIDTH="10">
  <FRAME SRC="navi.htm" NAME="Navigation" MARGINHEIGHT="10">
  <NOFRAMES>
  <BODY>
  Dieser Text wird angezeigt, wenn der Browser keine Frames kennt
  </BODY>
  </NOFRAMES>
 </FRAMESET>
</HTML>

Bildlaufleisten (Scroll-Leisten)

Frames werden von den meisten Browsern, falls erforderlich, automatisch mit Bildlaufleisten versehen, damit Inhalte, die größer sind als das Fenster, vollständig angezeigt werden können. Diese Automatik läßt sich abschalten.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
 <HEAD>
  <TITLE>Frame-Test</TITLE>
 </HEAD>
 <FRAMESET COLS="25%,75%">
  <FRAME SRC="main.htm" NAME="Inhalt" SCROLLING=yes>
  <FRAME SRC="navi.htm" NAME="Navigation" SCROLLING=no>
  <NOFRAMES>
  <BODY>
  Dieser Text wird angezeigt, wenn der Browser keine Frames kennt
  </BODY>
  </NOFRAMES>
 </FRAMESET>
</HTML>

Feste Fenstergröße

Falls du die Größenveränderung eines Frames durch den Besucher unterbinden willst, steht dir der Parameter NORESIZE zur Verfügung. Die Angabe bedarf keiner weiteren Werte.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
 <HEAD>
  <TITLE>Frame-Test</TITLE>
 </HEAD>
 <FRAMESET COLS="25%,75%">
  <FRAME SRC="main.htm" NAME="Inhalt">
  <FRAME SRC="navi.htm" NAME="Navigation" NORESIZE>
  <NOFRAMES>
  <BODY>
  Dieser Text wird angezeigt, wenn der Browser keine Frames kennt
  </BODY>
  </NOFRAMES>
 </FRAMESET>
</HTML>

Hinweis: Wenn ein Frame mit dieser Angabe NORESIZE versehen ist, können weitere Frames in derselben Reihe bzw. Spalte dann genauso wenig bewegt werden, da ansonsten Löcher entstehen würden.

Verweise zu anderen Frames

Normalerweise werden innerhalb einer Frame-Struktur Folgeseiten von Links in dem gleichen Frame angezeigt, von dem aus sie vom Benutzer aufgerufen werden. Bei Verweisen zu anderen Dateien ist im Frame-Konzept vorgesehen, direkt bestimmte Frames zu adressieren. Dazu dient der über die Angabe NAME= definierte Name. Es gibt allerdings einige reservierte Fensternamen, die eine bestimmte Bedeutung haben und NICHT noch einmal verwendet werden dürfen:

Mit einem normalen lokalen Verweis wird ein Frame adressiert. Es muss im Verweis nur ein zusätzlicher Parameter hinzugefügt werden, mit dem der Frame-Name bestimmt wird - der Parameter TARGET= [Name]. Der hinter TARGET= angegebene Name muss in Anführungszeichen stehen. Es können sowohl im Projekt vergebene Namen als auch reservierte Namen als auch Fensteradressen adressiert werden. Sofern der Frame-Name in einem fremden Projekt bekannt ist, kann natürlich auch dieser notiert werden.

<A HREF="murks.htm" TARGET="Bild">LINK</A>
   Verweis auf das Frame "Bild", in dem die Datei 
   "murks.htm" angezeigt werden soll.

<A HREF="murks.htm" TARGET="_blank">LINK</A>
   Die Datei "murks.htm" wird in einem neuen 
   Browserfenster angezeigt.

<A HREF="murks.htm" TARGET="_self">LINK</A>
   Die Datei "murks.htm" wird im gleichen Frame angezeigt.

Frame"verweigerer"

Gib Frameverweigerern eine Chance, indem du alternativen Text anzeigst. Hierzu dient der Tag NOFRAMES, der vor das letzte schließende </FRAMESET> gehört.
Denk dran, heute könnten User mit Handys deine Seiten besuchen, in Suchmaschinen willst du gut gelistet werden und und und...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
 <HEAD>
   <TITLE>Frame-Test</TITLE>
 </HEAD>
 <FRAMESET ROWS="20%,80%">
  <FRAME[...]>
  <FRAME[...]>
  <NOFRAMES>
  <BODY>
  ...alternatives Menue hier einbauen...
  </BODY>
  </NOFRAMES>
 </FRAMESET>
</HTML>

Kontakt/Feedback