HTML Specials - Frames
Toepassen van frames
Met behulp van het FRAMESET-element wordt het weergavevenster verdeeld in verschillende zelfstandige elementen, genaamd frames. In elk frame wordt een document geladen, onafhankelijk van de andere frames. Terwijl in het ene frame een link gevolgd wordt, blijft de inhoud van een ander frame behouden. Ook kan het volgen van een link in het ene frame, zorgen voor het verversen van de inhoud van een ander frame. Zo is het heel eenvoudig om een hoofdmenu of logo continu in beeld te houden. Ook kunnen frames worden gebruikt voor geavanceerde layout, op een soortgelijke manier als tabellen. Dit laatste moet echter sterk worden afgeraden: het effect kan met minder problemen grotendeels ook met tabellen worden bereikt.
De frame-elementen
FRAMESET ~ FRAME ~ NOFRAMES ~ Het TARGET-attribuut
FRAMESET
Het FRAMESET-element vervangt het gehele BODY-element. Door waardes op te geven voor de cols en/of rows attributen, worden verschillende horizontaal dan wel verticaal gescheiden frames gedefinieerd. De waardes geven gelijk het formaat aan van de frames. Voor elke waarde die wordt gedefinieerd, wordt er een frame aangemaakt.
Zo geeft het attribuut rows="25%,75%"
aan dat het venster moet worden verdeeld in twee rijen, waarvan de tweede drie keer zo hoog is als de eerste. Waarden met pixels zijn ook toegestaan, maar daar moet je heel voorzichtig mee omgaan. Je weet niet hoeveel ruimte de inhoud van het frame straks nodig heeft, tenzij er alleen een afbeelding in geplaatst wordt. Als het totaal aantal opgegeven pixels niet overeenkomt met de vensterbreedte, zal de browser zelf de waardes aanpassen. Het is verstandig om altijd minstens 1 frame een flexibele waarde te geven, zoals een percentage. Ook kun je helemaal geen waarde opgeven maar een joker inzetten: *
. Het attribuut cols="100,*"
verdeelt het venster in twee kolommen, waarvan de eerste 100 pixels breed is, en de tweede de rest van het venster vult.
Een frameset heeft als inhoud enkel een aantal FRAME elementen. Een FRAME element kan vervangen worden door een nieuwe FRAMESET. Op die manier krijg je 'geneste' frames. Verder kan een FRAMESET nog het NOFRAMES element bevatten, om een alternatief te bieden voor degenen die de frames niet kunnen of willen zien.
FRAME
Het FRAME element definieert de eigenschappen van de frames. Met behulp van attributen geef je de naam op (om later een link te laten verwijzen naar een bepaald frame), een bron voor de vulling van het frame, en eventuele rand- en scrollkenmerken.
NOFRAMES
Dit element wordt weergegeven als de browser geen frames weergeeft. Het kan een compleet alternatief document bevatten of verwijzingen naar de documenten die in de frames worden gebruikt. Het is nogal onbeleefd om hierin te zeggen: Uw browser ondersteunt geen frames, zorg dat u een betere browser krijgt.
Nog erger is het om helemaal geen NOFRAMES element te gebruiken.
Het NOFRAMES element bevat enkel een BODY element, en daarin kan weer van alles worden opgenomen.
Het TARGET-attribuut
Standaard vervangt een document dat met een hyperlink is aangeroepen het oorspronkelijke document (dus in het frame waarin geklikt werd). Om te kunnen verwijzen naar andere frames, en om los te komen uit frames, moet het target attribuut worden toegevoegd aan een hyperlink (A).
Het element <BASE target="">
kan worden opgenomen in de kop van een document om standaard de opgeroepen documenten in een ander frame te plaatsen.
De volgende waarden zijn mogelijk (en let op, gebruik geen hoofdletters):
- de naam van een bepaald frame, zoals dat met het
name
attribuut is vastgelegd _blank
plaatst het document in a nieuw venster_self
plaatst het document in het huidige frame (alleen nuttig bij gebruik van het element<BASE target="">
)_parent
plaatst het document in de bovenliggende FRAMESET (alleen nuttig bij frames-in-frames)_top
plaatst het document in het volledige venster, de frame-indeling vervalt
Attributen bij de frame-elementen
Dit zijn attributen die zijn toe te voegen aan het FRAMESET-element:
attribuut | regelt | mogelijke waarden |
---|---|---|
rows |
de afmetingen van de rijen waarin het venster wordt verdeeld | een getal in pixels (of een percentage of een 'joker': * ) per rij, gescheiden door komma's |
cols |
de afmetingen van de kolommen waarin het venster wordt verdeeld | een getal in pixels (of een percentage, of een 'joker': * ) per kolom, gescheiden door komma's |
Dit zijn attributen die zijn toe te voegen aan het FRAME-element:
attribuut | regelt | mogelijke waarden |
---|---|---|
name |
de naam van het frame, voor gebruik met het target-attribuut van hyperlinks - gebruik een leesbare naam | alleen gewone tekst, beginnend met een letter |
src |
het document dat wordt weergegeven in het frame | een URL |
frameborder |
de weergave van een rand tussen de frames | 1 of 0 |
scrolling |
de aanwezigheid van scrollbars | yes of no of auto (alleen indien nodig)Dit attribuut is alleen verantwoord te gebruiken als je precies weet hoe groot het frame is en hoeveel ruimte de inhoud nodig heeft. Dat zal zelden voorkomen. |
MS Internet Explorer en Netscape Navigator hebben aparte attributen om de frameborder te beïnvloeden. Als je de frameborders wilt verwijderen in beide browsers, zul de volgende attributen moeten toevoegen aan het FRAMESET element: border=0 frameborder=0 framespacing=0
.
Voorbeeld van een eenvoudige frameset:
<FRAMESET rows="100,*">
<FRAME name="R1K1" src="logo.html">
<FRAMESET cols="40%,*">
<FRAME name="R2K1" src="nav.html">
<FRAME name="R2K2 src="main.html">
</FRAMESET>
<NOFRAMES>
<BODY>
<P><A href="nav.html">Navigatie voor niet-frames gebruikers.</A>
</BODY>
</NOFRAMES>
</FRAMESET>
Voorbeeld-weergave in jouw browser.
En hetzelfde voorbeeld weergegeven in ASCII-art:
--------------------------------------- | frame R1K1 | | | --------------------------------------- | | | | | | | | | | frame R2K1 | frame R2K2 | | | | | | | ---------------------------------------
Nadelen van frames
- Oudere en text-browsers geven geen frames weer.
Dit kan worden ondervangen door gebruik te maken van het NOFRAMES-element. De inhoud hiervan wordt alleen weergegeven als er geen frames worden weergegeven. Hierin kan een alternatieve navigatie worden aangeboden. - Het is niet mogelijk om een URL te geven van een andere toestand van een frameset dan de beginsituatie. Ook het maken van bookmarks van andere toestanden van de frameset is hierdoor onmogelijk.
Stel: deze hele site is in een frameset opgenomen, en de navigatielementen bovenaan deze pagina zijn in een apart frame opgenomen. Dan kan naar deze pagina alleen worden verwezen door een beschrijving te geven van het gevolgde pad. Bijvoorbeeld: kies 'HTML Specials' en kies dan 'Frames'. Door rechtstreeks te verwijzen naar dit document (frames.html) zou je de frameset kwijtraken. - Een logo en een navigatie-menu die altijd in beeld blijven, kosten veel ruimte op het beeldscherm, zeker bij kleinere schermresoluties. Zo blijft er weinig ruimte over voor echte 'inhoud' van de documenten.
- Frames worden heel vaak slecht ontworpen. Voorbeelden:
- De gekozen afmetingen zorgen ervoor dat er overal scrollbars te zien zijn, wat nog meer beeldruimte vreet en lastig leest.
- Sommige auteurs zetten de scrollbars helemaal uit, maar nu is een gedeelte van de inhoud gewoon niet meer te lezen omdat een frame te klein is.
- Links naar externe documenten komen in de frameset terecht. Soms komt een andere frameset in de eerste frameset terecht.
- Veel zoekmachines herkennen geen frames, de inhoud van de site wordt dan niet geïndexeerd. Als toch ergens wordt verwezen naar onderdelen van de frameset, komt alleen dat ene onderdeel, en niet de bovenliggende frameset te voorschijn. Elk frame en elk document zou dus op zichzelf moeten kunnen staan, maar dan heeft het gebruik van frames geen nut meer.