Frameeigenschaften

Scrollbars (Bildlaufleisten)

Normalerweise bestimmt der Browser selbst ob ein Frame Scrollbars erhält. Wenn der Inhalt genug Platz hat werden keine Scrollbars angezeigt, wenn nicht werden sie angezeigt damit man zu den nicht sichtbaren Teilen scrollen kann. Wenn du willst, dass ein Frame keine Scrollbars bekommt, auch nicht wenn ein Teil des Inhalts nicht sichtbar ist, kannst du das <frame>Tag um scrolling="no" erweitern. Wenn immer Scrollbars gezeigt werden sollen, ob der Inhalt genug Platz hat oder nicht, schreibst du statt dessen scrolling="yes". Die dritte Möglichkeit, nämlich scrolling="auto", kannst du weglassen. Das ist die Standardeinstellung. scrolling="no" ist normalerweise nur sinnvoll wenn der Frame z.B. nur ein Logo enthält, dessen Größe kleiner als die (feste) Größe des Frames ist, oder wenn ein Teil der Seite zwar geladen aber nicht sichtbar sein soll. Z.B. um Dateien in den Browsercache zu laden. Dann sollten diese Elemente so platziert werden, dass sie sicher außerhalb des sichtbaren Bereiches des Frames liegen. In diesem Fall musst du aber auch beachten, dass der User die Größe des Frames normalerweise verändern kann.

Quelltext

<html>
<head>
<title>Titel</title>
</head>
<frameset rows="50%,*">
  <frameset cols="50%,*">
    <frame name="aaa" src="02.htm" scrolling="yes">
    <frame name="bbb" src="03.htm" scrolling="no">
  </frameset>
  <frameset cols="50%,*">
    <frame name="ccc" src="04.htm" scrolling="auto">
    <frame name="ddd" src="05.htm">
  </frameset>
</frameset>
</html>

Um die Unterschiede sehen zu können, veränder mal die Größe der Frames. Dazu klickst du auf einen Rahmen zwischen den Frames und ziehst ihn mit gedrückter (linker) Maustaste wo anders hin.

Die meisten Browser stellen die Frames nicht so dar, wie es der HTML-Standard verlangt. Die meisten IE-Versionen stellen bei scrolling="yes" die waagerechte Scrollbar nicht dar wenn sie nicht gebraucht wird. NN 6, NN 7 und Mozilla 1 stellen weder die senkrechte noch die waagerechte Scrollbar dar wenn sie nicht gebraucht werden.

Feste Größe

Wie du eben gesehen hast, kann der Betrachter die Größe der Frames im Browser selbst verändern. Wenn du das nicht wünschst kann du das auch verhindern.

Quelltext

<html>
<head>
<title>Titel</title>
</head>
<frameset cols="*,*,*">
  <frame name="aaa" src="02.htm" noresize>
  <frame name="bbb" src="03.htm">
  <frame name="ccc" src="04.htm">
</frameset>
</html>

Wenn du in einem <frame>Tag noresize (no - engl.: nein, kein; resize - engl.: Größe ändern) notierst, kann die Größe dieses Frames nicht verändert werden. Das bedeutet, dass der/die Rahmen des Frames nicht verschoben werden können. Wenn im Beispiel der mittlere Frame diese Eigenschaft hätte, wäre also bei keinem Frame die Größe änderbar.

Ränder

Du kannst auch festlegen, dass in einem Frame ein Abstand zwischen Framerand und dargestellter Seite gehalten werden soll.

Quelltext

<html>
<head>
<title>Titel</title>
</head>
<frameset cols="*,*">
  <frame name="aaa" src="02.htm" marginwidth="20" marginheight="30">
  <frame name="bbb" src="03.htm">
</frameset>
</html>

Wenn du in einem <frame>Tag marginwidth="xx" (margin - engl.: Rand; width - engl.: Breite) notierst wird links und rechts zwischen Framerand und Seite ein Mindestabstand von xx gelassen. "xx" musst du natürlich durch den Abstand in Pixel ersetzen, den du haben willst. Mit marginheight="xx" bestimmst du den oberen und unteren Rand. Du kannst für die Frames unterschiedliche Ränder festlegen. Ob du nur marginwidth, nur marginheight, beides oder keins von beiden verwendest ist dir überlassen.

Rahmendicke

Normalerweise ist zwischen den Frames immer ein sichtbarer Rahmen. Die Breite dieses Rahmens, sein Aussehen, und ob überhaupt einer zu sehen sein soll, kannst du bestimmen. Es gibt eine Möglichkeit gar keinen sichtbaren Rahmen zu machen. Die wird zwar von allen wichtigen Browsern unterstützt, aber die Syntax dafür ist unterschiedlich. Man muss also Anweisungen für NN und Anweisungen für IE machen. Dazu kommt, dass es noch eine dritte Variante gibt. Das ist die Methode die vom HTML-Komitee als "Norm" festgelegt wurde. Sie funktioniert aber bei keinem Browser. Sie wird hier auch nur der Vollständigkeit halber kurz beschrieben.

Kein sichtbarer Rahmen

Quelltext

<html>
<head>
<title>Titel</title>
</head>
<frameset cols="*,*" frameborder="0" framespacing="0" border="0">
  <frame name="aaa" src="02.htm">
  <frame name="bbb" src="03.htm">
</frameset>
</html>

Dieses Beispiel ist so aufgebaut, dass es von allen ernst zu nehmenden Browsern richtig interpretiert wird. frameborder="0" bewirkt, dass kein 3D-Rahmen gezeigt wird. Flache Rahmen sind im NN 4 nicht verschiebbar. Die Größe dieser Frames kann man zwar im IE und in Opera verändern, aber nicht in NN 4. Hier sind die Angaben "0" oder "no" für "kein 3D-Rahmen" bzw. "1" oder "yes" für "mit 3D-Rahmen" erlaubt. framespacing="0" bewirkt, dass beim IE kein Abstand zwischen den Frames gelassen wird. Hier wird eine Angabe in Pixel für die Breite (bzw. Höhe) des Abstandes erwartet. Erlaubt sind alle positiven ganzen Zahlen einschließlich der 0. Bei 0 werden die Frames direkt aneinander gefügt Bei gleichem Hintergrund ist der Übergang nicht sichtbar. border="0" bewirkt, dass beim NN der Rahmen 0 Pixel breit ist. Hier wird auch eine positive, ganze Zahl einschließlich der 0 für die Rahmenbreite in Pixel erwartet. Die 0 bewirkt hier das selbe für NN, wie die 0 bei framespacing für IE. Wenn alle 3 Angaben gemacht werden funktioniert es in allen aktuellen Browsern.

Quelltext

<html>
<head>
<title>Titel</title>
</head>
<frameset cols="*,*">
  <frame name="aaa" src="02.htm" frameborder="0">
  <frame name="bbb" src="03.htm" frameborder="0">
</frameset>
</html>

Das Beispiel links zeigt die Variante, die der Norm des W3C entspricht. Ich rate vom Gebrauch ab, weil diese Variante zwar der Norm entspricht aber nicht funktioniert.


Beachte auch, dass der User ohne sichtbare Rahmen die Framegröße nicht verändern kann! Zum Ändern der Größe müsste er ja den Rahmen mit der Maus verschieben. Wo nix ist, kann er nix verschieben.

Sichtbare Rahmen

Quelltext

<html>
<head>
<title>Titel</title>
</head>
<frameset rows="50%,*" frameborder="1" framespacing="7" border="7">
  <frameset cols="50%,*" frameborder="0" framespacing="4" border="4">
    <frame name="aaa" src="02.htm">
    <frame name="bbb" src="03.htm"
  </frameset>
  <frameset cols="50%,*" frameborder="1" framespacing="12" border="12">
    <frame name="ccc" src="04.htm"
    <frame name="ddd" src="05.htm"
  </frameset>
</frameset>
</html>

Oben siehst du, wie das ganze mit sichtbaren Rahmen mit und ohne 3D aussieht. Beachte, dass der Rahmen zwischen den beiden oberen Frames im NN 4 nicht verschoben werden kann.

Rahmenfarbe

Quelltext

<html>
<head>
<title>Titel</title>
</head>
<frameset rows="50%,*" frameborder="1" framespacing="7" border="7" bordercolor="#FF0000">
  <frameset cols="50%,*" frameborder="1" framespacing="7" border="7" bordercolor="#00FF00">
    <frame name="aaa" src="02.htm">
    <frame name="bbb" src="03.htm">
  </frameset>
  <frameset cols="50%,*" frameborder="1" framespacing="7" border="7" bordercolor="#0000FF">
    <frame name="ccc" src="04.htm">
    <frame name="ddd" src="05.htm">
  </frameset>
</frameset>
</html>

Wie du siehst kann man die Rahmen auch farbig machen. Diese Farbangabe soll im obersten Frameset gemacht werden und ist nur für die 3D-Rahmen wirksam. Das "obersten" bezieht sich natürlich auf die Hirarchie und nicht auf die räumliche Anordnung. Solange man das so macht wird es von IE, NN und von Mozilla interpretiert. Opera interpretiert die Rahmenfarbangabe nicht. Man kann auch für die einzelnen Framesets verschiedene Farbangaben machen. Das funktioniert im IE sehr gut, führt aber im NN zu recht kuriosen Ergebnissen. Oben siehst du den Quellcode für das Beispiel. Unten siehst Screenshots wie das ganze in den verschiedenen Browsern interpetiert wird. Zur Verdeutlichung habe ich die Farbangaben im Quelltext in der entsprechenden Farbe dar gestellt.


IE 5.5

NN 4

NN 7 (NN 6 und Mozilla 1 sehen auch so aus)

Opera 7 (Opera 5 und 6 sehen auch so aus)

Weiter geht's mit Links und Frames.


Um einen Link zu setzen, der direkt auf diese Seite führt, verwende folgende Url: