HTML/Frames

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Hinweis

Verzichten Sie im WWW auf Framesets. Wenn Sie Teile der Seite auslagern wollen, sind serverseitige Techniken meist besser geeignet.

Frames und Framesets[Bearbeiten]

Netscape führte 1996 mit Frames eine Technik ein, mit der im Bildschirm mehrere Dateien gleichzeitig angezeigt werden konnten. Dies ermöglichte z.B. eine Navigation in einem Bereich und einen Bereich, der die wechselnden Inhaltsdokumente aufnahm. Diese Technologie wurde mit HTML5 aus dem Standard entfernt, da sie entscheidende Nachteile aufweist. Frames gelten als non-conforming feature, das nicht verwendet werden sollte.

Ein Frameset einrichten[Bearbeiten]

Frames bestehen aus einer HTML-Seite, welche das Frameset definiert, sowie aus Seiten, die in dieses Frameset geladen werden sollen.

  • Leer
  • Leer
  • Leer
  • Leer
  • Achtung
Beispiel ansehen …
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
  <frameset cols="200, *">
    <frame src="FRAMESET_navigation.html" name="navigation">
    <frame src="FRAMESET_home.html" name="inhalt">
  </frameset>
</html>
Das Attribut cols legt die Spalten eines Framesets fest. In diesem Beispiel werden zwei Spalten definiert. Die erste Spalte erhält eine Breite von 200 Pixeln, durch * erhält der zweite Frame automatisch den Rest der Breite des Browserfensters. Die gleiche Syntax wird für das Festlegen von Zeilen (rows) verwendet.
In das Frameset werden die zwei benötigten Frames eingebunden. Über das Attribut src werden die verwendeten Ressourcen bestimmt.

Links in Framesets definieren[Bearbeiten]

Um einen Link zu erstellen, dessen Ziel in einem anderen Frame angezeigt werden soll, muss der Zielframe ein name-Attribut erhalten. Der Link erhält das Attribut target. Es braucht als Wert den Namen des Zielframes.

Beispiel
<a href="content.html" target="inhalt">Rubrik 1</a>
Beachten Sie: In den strict-Varianten von (X)HTML ist das Attribut target nicht erlaubt.


Nachteile[Bearbeiten]

Frames wurden Ende des letzten Jahrtausends fleißig verwendet, als Provider Möglichkeiten des serverseitigen Zusammenbaus von Websites nur selten anboten. Heute hat sich dies aber geändert. Heute stellen fast alle Provider mindestens eine serverseitige Sprache zur Verfügung, welche den traditionellen Bedarf für Frames obsolet machen.

Frames haben eine Reihe von Nachteilen:

Durch die Trennung in mehrere Dokumente …

  • konnten Nutzer keine Lesezeichen auf Unterseiten setzen, da Browser nur die Adresse des aufrufenden Framesets und nicht der geladenen Inhaltsframes anzeigten, konnten diese durch unerfahrene Browseranwender nicht in die Bookmarks aufgenommen werden
  • konnten Seiteninhalte nicht komplett ausgedruckt werden
  • wurden (über Suchmaschinen gefundene) Seiteninhalte ohne Navigation aufgerufen

Als Lösung benötigte man ein JavaScript, das das Frameset nachlädt, wenn eine Unterseite alleine geöffnet wurde.

Des Weiteren konnten die verschiedenen Dokumente …

  • nicht mit CSS positioniert werden, so dass die Ansicht nicht für Geräte mit kleinem Viewport angepasst werden kann.

Alternativen[Bearbeiten]

Heute ist die Verwendung von Frames unangemessen und verpönt.

fixierte Navigation[Bearbeiten]

Bei längeren Seiteninhalten wird es teilweise gewünscht, dass eine seitliche Menüleiste beim Herunterscrollen des danebenliegenden Hauptinhalts nicht mit wegläuft.

Dies kann man durch eine Fixierung der Menüleiste mit position:fixed erreichen.

Verschiedene Frametechniken[Bearbeiten]

Alternativ gibt es die Möglichkeit mit iframes zu arbeiten. Hierbei wird in einem Bereich Inhalt eingebettet, wobei das iframe-Element die Rolle eines normalen HTML-Elements hat. Die Methode ist vergleichbar der Verwendung eines img- oder object-Elements.

Beispiel: Frameset
┌────────────────────┐
│ frameset.html      │
├────────────────────┤
│ <frameset>...      │
│┌──────────────────┐│
││ Headframe        ││
││ (navigation.html)││
│├──────────────────┤│
││ Contentframe     ││
││ (content.html)   ││
││                  ││
│└──────────────────┘│
│ ...</frameset>     │
└────────────────────┘
  • Das Frameset wird einmal zentral definiert.
  • Die Frameset-Adresse ist im Browser Location-Bar vorhanden. Der Inhaltsframe kann nur umständlich referenziert werden.
  • Ein Gast via Suchmaschine sieht keine Navigation.
Beispiel: Iframe
┌─────────────────────────┐
│ content.html            │
├─────────────────────────┤
│ <iframe                 │
│  src="navigation.html"> │
│┌───────────────────────┐│
││ (navigation.html)     ││
│└───────────────────────┘│
│ </iframe>               │
│ Inhalt ...              │
│                         │
│                         │
│                         │
└─────────────────────────┘
  • Iframe wird in jedem Inhaltsdokument notiert.
  • Die Inhaltsseite ist im Browser Location-Bar vorhanden.
  • Für Gäste via Suchmaschine wird die Navigation in das Inhaltsdokument eingebettet.

Iframes nehmen Ihnen einige Nachteile der Frameset-Technik ab. Sie bieten außerdem den Vorteil, einen bestimmten Teil des Inhalts separat verlinken zu können, was bei einer Navigation u.U. sinnvoll sein kann. Es bleiben aber folgende Nachteile:

  • Das aufrufende Iframe weiß nichts über die visuelle Größe des eingebundenen Dokuments. Eine sinnvolle Einbettung sollte daher mit CSS gesteuert werden.
  • Beim Navigieren durch das Dokument mit der Tastatur mit der Tab-Taste ist ein zusätzlicher Tastenanschlag notwendig.
  • Die Tugend verlinke nicht das aktuelle Dokument ist immer noch nicht erfüllt und kann nur mit einem Script erreicht werden.

Weblinks[Bearbeiten]