Autor: memowe
5.1 Frames - der Teufel im Detail oder Allheilmittel?
Allgemein: Frames ermöglichen eine logische und gestalterische Aufteilung einer einzelnen Seite. Diese Aufteilung wird durch eine einzelne spezielle HTML Datei bestimmt, das Frameset (die Datei muss dann auch die index.html werden) ... dieses Frameset splitted also die Seite in die eingestellten Teile auf. Diesen Teilen bzw. Frames kann man dann wiederum einzelne HTML Dateien zuordnen.
Durch das target="" Attribut bei den Links kann man dann letztlich entscheiden in welchem Teil des Framesets die entsprechend verlinkte Datei angezeigt werden soll. Ein kleines Beispiel wie es oft verwendet wird: Links habe ich einen Navigations-Frame mit meinen Navigations-Links. Rechts davon der größere "Content"-Frame... diesem Frame gibt man dann einen Namen - z.B. text. Bei sämtlichen Links innerhalb der Site, muss man dann angeben, dass der entsprechende Inhalt in diesem Frame namens text eingebunden werden sollen: <a href="seite2.html" target="text">Link</a>
Das bedeutet, dass der linke Navigationsframe immer zu sehen ist, während sich lediglich der rechte Inhalt-Frame ändert!
Frames sind allerdings in der Webworker-Szene arg umstritten. Hier im Board herrscht eigentlich eine mittelstarke "Anti-Frames"-Stimmung, um der Objektivität ihren Part zu verleihen, seien hier die Vor- und Nachteile von Frames kurz aufgezeigt:
Vorteile
- Abspalten des Inhalts von der Navigation mit einfachsten Mitteln. Man erstellt einmal einen Navigationsframe und baut dazu später nur noch die Inhalt-Seiten. Wenn später ein weiterer Link in die Navigation hinzukommen soll, muss lediglich diese eine Navigationsdatei entsprechend geändert werden. Bei herkömmlichen Table-Design müsste man alle HTML Dateien verändern, die die Navigation enthalten, so keine anderen Lösungen mit PHP, SSI usw. genutzt werden.
- Einfaches Layouten. Ein Anfänger kann mittels Frameset sehr schnell ein einheitliches Layout schaffen, das laut unserer Design-Richtlinien sehr wichtig ist.
- Bei vielen Navigationslinks und in bestimmten Fällen wo schnellstens zwischen den einzelnen Navigationsbereichen umgeschaltet werden muss, ist ein Frameset sicherlich nicht die schlechteste Lösung, da halt nur ein Teil neu geladen werden muss.
- Da mit dem Laden des Framesets die groben Proportionen stehen, ist der Aufbau einer Seite ruhiger als bei einem Tabellenlayout mit dynamischen Maßen.
- es gibt eine Form der intelligenten Framesets, die z.B. ein Aufklappen von Menüs im linken Navigationsframe ermöglichen ganz einfach durch die Verlinkung zu einem zweiten Frameset, statt zu einem "Content-Frame". Siehe z.B.
http://www.hochtief.de
- Die Navigation scrolled nicht aus dem Bild, wenn der Content mal länger werden sollte.
Nachteile
- Häufiger Design-Verschandeler. Durch das relativ einfache "Zusammenkloppen" des Framesets entstehen häufig lieblos scheinende "Designs" die man noch aus 7m Entfernung - ohne einen Link benutzt zu haben - als Framepage erkennt. Das Verwenden von Frames ist halt sehr einfach und die Erkenntnis, dass "es" funktioniert täuscht bei Anfängern gelegentlich über die Tatsache eines nicht vorhandenen Designs hinweg. Dies ist kein direkter Nachteil der Technik an sich (denn die kann für das Fehlverhalten ihrer Nutzer ja nichts), sondern soll lediglich zeigen, dass es zwar einfach ausschaut Frames zu machen, es aber wesentlich schwieriger ist, damit wirklich dann ein vernünftiges Layout zu machen.
- Das Verlinken auf einzelne Seiten bzw. Unterseiten der Website ist nicht möglich, wenn man sich nicht im eigenen Frameset bewegt. D.h. Fremdlinks auf bestimmte Inhalte der eigenen Websites sind dadurch nicht möglich - oder aber der andere verlinkt auf die HTML-Datei des "Content-Frames" und bekommt damit die Navigation nicht zu sehen... man kann also im übelsten Fall nicht auf andere Seiten der Site zugreifen. Es gibt zwar die Möglichkeit, bei einzeln aufgerufenen Unterseiten eines Framesets dieses nachzuladen, das geht aber nur in der Startkonfiguration und auch nur, wenn JavaScript aktiviert ist:
|
Quellcode
|
1
2
3
4
5
6
7
8
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
if(parent.location==window.location)
{
parent.location="index.html";
}
//-->
</SCRIPT>
|
Davon (generell von Frames) raten wir aber ab

- Das Bookmarken auf spezielle Inhalte ist damit natürlich ebenfalls nicht möglich...
- Ein ebensolches Problem gibt es beim Druck einer Seite, da Neulinge nicht unbedingt wissen, welchen Teil eines Framesets sie verwenden wollen, bzw. was das überhaupt ist.
- Die Seitenavigation ist über der URL bzw. URI nicht möglich. Dem Internet-Laien mag dies als nicht so schlimm erscheinen - der Fortgeschrittenere Nutzer sieht ganz gerne über den URL in welchen Kategorien der Seite er sich gerade bewegt. Bei komplexeren dynamischen Seiten ist der URI also die Variablenübergabe via GET für den Profi ebenfalls manchmal nützlich...
- Man ist als Designer mit Frames ziemlich schnell sehr eingeschränkt. Man hat sehr schnell Probleme z.B. ein frameübergreifendes Design vernünftig hinzubekommen. Wenn man z.B. in einem Navigations-Frame links eine Grafik hat und diese Links fortführen will, dann hat man prinzipiell schon zwei Frames die statisch, also nicht scrollbar sind. Der Text scrolled also damit in die Grafik oben hinein... Wenn man also den Anspruch an die fixierte Navigation nicht erhebt und mit Tabellen arbeitet, kann man ein Layout besser mit dem Content in Einklang bringen.
- Man ist ziemlich gebunden bei den Auflösungen. Während Tables sehr leicht variierbar sind, verhalten sich Frames dabei etwas bockig ... zudem sehen Navigationsrahmen oben und links in einer 1024er Auflösung noch ziemlich gut aus - wenn man dann auf 800x600 runterschaltet, erkennt man vor lauter Navigation den Inhalt nicht mehr.
Der Link zum Thema:
http://selfhtml.teamone.de/html/frames
Alternative: Mit den HTML-Tabellen (<table>) kann man ein Layout pixelgenau festlegen. Da der gesamte Quelltext in einer Datei steht und verschachtelte Tabellen im Quelltext unübersichtlich werden können, lassen sich Neulinge leicht abschrecken, die Vorteile überweigen jedoch. Wer erst mit HTML anfängt, sollte sich sofort mit Tabellen beschäftigen.
Der Link zu den Tabellen:
http://selfhtml.teamone.de/html/tabellen/