Eenvoudige HTML en CSS
Frames
Met frames
kun je het scherm in rechthoekige stukken verdelen,
en in elk stuk iets anders laten zien. Dit is handig om
bijvoorbeeld aan de zijkant of bovenin steeds een menu in
beeld te houden, terwijl de rest van het scherm weergeeft wat
via dat menu is opgeroepen.
In een HTML-bestand dat de frame-verdeling aangeeft staat
in plaats van een body-tag een frameset-tag. Dat verdeelt
het scherm in twee of meer horizontale stukken, of in
twee of meer verticale gedeeltes.
Binnen de frameset staan frame-tags, die ieder verwijzen naar
een ander HTML-bestand, dat de inhoud voor dat stuk scherm
bevat.
Geneste framesets: Er kan ook binnen een frameset weer
een andere frameset voorkomen , zodat een verticaal
schermgedeelte weer horizontaal
verder onderverdeeld kan worden, of een horizontaal deel
verticale onderdelen kan krijgen.
Een frameset-tag kan er bijvoorbeeld zo uitzien:
<frameset rows="15%,85%">
<Frame NAME="upper" SRC="upper.htm">
<frameset cols="20%,80%">
<Frame NAME="left" SRC="left.htm">
<Frame NAME="text" SRC="text.htm">
</frameset>
</frameset>
Behalve NAME en SRC kunnen nog andere
zaken worden ingesteld, zoals frameborder, marginwidth,
marginheight, noresize en scrolling. Zie hierover
de
specificaties van het
World Wide Web consortium,
hoofdstuk 16.2.2, of deze
uitleg
in de
Handleiding HTML, door
Hans de Jong.
Soms wordt aangeraden <noframes> op te nemen, voor browsers die
geen frames ondersteunen. Maar er zijn vrijwel geen browsers meer die
geen frames kunnen weergeven. Zelfs met de niet-grafische browser
lynx,
die de frames niet naast en boven elkaar zichtbaar kan maken, is
de inhoud nog steeds wel bereikbaar, ook als <noframes> ontbreekt.
<noframes> lijkt dus overbodig.
Frames hebben het nadeel dat ze de omgang met hyperlinks moeilijk maken.
-
Stel je bent in het begin van een site met een linker- en een
rechterschermhelft.
In die rechterschermhelft staat een link, die daarin een
andere tekst oproept.
Geef je nu het webadres (de URI), zoals boven in de browser
vermeld, door aan iemand anders, dan krijgt die niet hetzelfde
te zien als waar je hem/haar op wilde wijzen. De later door
de link opgeroepen inhoud staat er dan namelijk nog niet.
Dit probleem is op te lossen door steeds te hyperlinken naar
een nieuwe frameset, die grotendeels verwijst naar dezelfde
HTML-bestanden als de andere, op één schermdeel na. Maar
dan zijn al gauw veel verschillende framesets nodig, wat nogal
bewerkelijk is.
-
Een link naar een heel andere site zal inhoud weergegeven in het
schermdeel waar de link in staat. Dat is meestal niet de bedoeling,
zeker niet als die andere site ook weer frames gebruikt. Het is te
verhelpen door in de hyperlink TARGET=_top toe te voegen, dus:
<A TARGET=_top HREF="hier de URI">tekst van de hyperlink</A>
Dit zorgt ervoor dat de inhoud waarnaar de hyperlink verwijst over
het hele scherm wordt getoond.
-
Met TARGET is het ook mogelijk om met een hyperlink in het ene
schermdeel iets te laten zien in het andere. Als TARGET wordt dan
verwezen naar de naam die achter <frame NAME= was opgegeven.
Ik pas dat in de voorbeeldsite toe in upper.htm, waarin links
zitten om teksten op te roepen in het rechteronderdeel van het scherm.
-
Zie over voordelen en vooral nadelen deze
uitleg
(in het Engels).
-
Let op: TARGET is onder de
strikte
opvatting van HTML 4.0.1 niet meer
toegestaan, waarschijnlijk vanwege genoemde nadelen. OBJECT zou een
vervanger voor Frames kunnen zijn, maar de browsers implementeren die
zo verschillend en onhandig, dat ze in de praktijk onbruikbaar zijn.
Het valt daarom te overwegen om maar liever helemaal geen frames te
gebruiken. Een menu dat steeds zichtbaar blijft (de voornaamste reden
voor het gebruik van frames) is dan te vervangen door een enkele
hyperlink op elke pagina (eventueel boven en onder)
die dat menu oproept. Dan is het niet steeds zichtbaar, maar wel
binnen handbereik, mits alle pagina's kort zijn.
Vorige
Begin