Frames gebruiken
De inhoud van deze pagina is verouderd. Dat komt doordat de tags om frames mee te maken uit de HTML-standaard
zijn verdwenen. Veel websites werken nog met frames, daarom is dit verhaal hier nog gehandhaafd.
De codegenerator om framesets mee te maken wordt niet meer onderhouden en er wordt geen ondersteuning meer voor gegeven.
Een handige manier om een webpagina in te delen is met behulp van frames. Daarmee verdeel je de bladzijde in een aantal
rechthoeken (Frames) van vaste of variabele afmetingen. Elk frame wordt gereserveerd voor een eigen, speciale taak.
De oorspronkelijke versie van deze website had vijf frames:
De huidige versie van deze site bevat geen frames meer. Aan de opmaak is dat niet te zien!
- De gele kolom met de groene rafelrand, links.
- De kolom links, met daarin het hoofdmenu.
- De balk bovenaan met de titel.
- De nuttige inhoud.
- De gele kolom met de groene rafelrand, rechts.
De frames 1 en 5 dienen om de informatie in het midden van het scherm te houden. Als het browser-window minder dan 800 pixels breed is zijn ze niet zichtbaar.
Zie ook het item Informatie van de website in het midden van het scherm houden.
Het gebruik van frames heeft zowel voor- als nadelen. Veel webdesigners (zoals ik ) zweren er bij, veel anderen verfoeien het .
Om frames goed te kunnen gebruiken moet je weten wat je doet. Je moet de HTML-code helemaal zelf maken
en dat niet overlaten aan software. Als je al een code generator gebruikt moet je gemaakte code tag voor tag
controleren en vaak corrigeren.
Als je níet goed weet wat je doet, is het gebruik van frames lastig en leidt het al gauw tot een
lelijk resultaat.
Voor zowel vóór als tégen het gebruik van frames zijn goede argumenten te geven.
Op internet overheersen de tegen-argumenten. Die lijken vooral te zijn ingegeven door de gebrekkige manier
waarop webcrawlers met frames omgaan. Veelal zijn ze echter terug te voeren op de website-bouwers zelf, die
te weinig aandacht geven aan het functioneren van hun site. Ik vind de tegen-argumenten daarom niet erg
sterk.
De nu beschikbare alternatieven zijn voor het gebruik van frames zijn m.i. meestal onvoldoende, omdat ze een
CMS vereisen of veel dubbele code veroorzaken.
Op deze pagina wordt een aantal aspecten van het gebruik van frames behandeld. Daarbij wordt ook -kort- ingegaan op het gebruik van CSS als alternatief voor frames.
- De code om een frameset mee te maken wordt hier niet behandeld. Een uitgebreide beschrijving
vind je o.a. in Handleidinghtml.nl. Wel is
er een eenvoudige code-generator op deze site beschikbaar, zie verder op deze bladzijde.
- Argumenten vóór het gebruik van frames:
- De indeling van de website is duidelijk en goed gestructureerd.
- Aan elk frame wordt een eigen, aparte taak toebedeeld: menu, titel, informatie. Deze zaken zijn altijd in beeld en scrollen niet weg met de informatie.
- Argumenten tegen het gebruik van frames:
Daarbij mijn opmerkingen. Let wel: Ik ben vóórstander van frames!
Het goed gebruiken van frames in een website vraagt zorgvuldig programmeerwerk van alle pagina's op de site. Daarmee voorkom je onderstaand verdriet:
- Als je een website laadt in een frame van een andere website krijg je er maar dat deel te zien dat
in dat frame past.
Dit argument klopt op zich wel. Je kunt het gemakkelijk omzeilen door te zorgen dat je eigen frameset altijd met _top wordt geladen. Zie het item Frames van de aanroepende pagina overschrijven.
Je zou eigenlijk nooit moeten toestaan dat je website in een frame van een andere site wordt geladen, ook niet in een <IFRAME>. Hij hoort er niet! Het maakt daarbij niet uit of je eigen website frames bevat of niet! - Als een informatie-pagina van een website met frames in een zoekmachine wordt gevonden en geopend,
zie je de context van die pagina (lees: de frames) niet.
Ook dit argument klopt op zich wel. Maar ook dit kun je omzeilen. Een item over hoe je dat kunt aanpakken is van de site verwijderd, omdat een praktijkvoorbeeld met deze site niet meer mogelijk is. - Websites met frames zijn moeilijk te behappen voor de webcrawlers van zoekmachines. Sites met ingewikkelde
framesets worden zelfs helemaal niet geïndexeerd.
Dit was vroeger ontegenzeggelijk waar. Het zegt iets over de kwaliteit van veel webbots, die op dit punt maar weinig beter schijnt te worden.
Het probleem is overigens gemakkelijk te omzeilen door een goed bereikbare sitemap te maken, die gelinkt wordt vanaf de eerste pagina van de website. Zorg ervoor dat de sitemap alleen "echte" informatie-pagina's bevat. Maak een link in de <noframes>-sectie van de frames-pagina.
Je kunt voor Google een aparte "sitemap" maken, in XML-formaat. Daarmee kun je precies kunt aangeven wat je geïndexeerd wilt hebben. Webcrawlers van andere zoekmachines gebruikien die XML-sitemap overigens ook.
En-passant voorkom je op deze manier dat gegevens die niet relevant zijn in een zoekactie (zoals een menu of een titelbalk), in de resultaten van een zoekmachine terecht komen. - 1.: Het indelen van een website in frames is lastig en tijdrovend. Het opzetten van een site met
alleen "gewone" pagina's is veel eenvoudiger.
2.: In plaats van frames kun je ook tabellen gebruiken om de pagina's in te delen.
Gewoonlijk maak je alleen bij het eerste ontwerp van een website een frameset aan. Als de indeling eenmaal vast ligt kun je de frameset verder vergeten. Je hoeft je verder geen zorgen te maken over de plaats van de menu's enz. op de pagina.
Het voorkomt ook dubbele code: Op elke bladzijde van een "gewone" site moeten het menu en de titel herhaald worden. Dat is erg lastig als je die wilt wijzigen. Dit laatste pleit dus eigenlijk vóór het gebruik van frames.
Veel webdesign programma's beschikken overigens over een code-generator om framesets mee te maken. Deze website heeft er ook een. Zie verder op deze bladzijde. - Content Management Systemen kunnen niet goed met frames overweg.
In plaats van frames wordt door de betere CMS-en gewoonlijk CSS ingezet. Maar dat lost het probleem van de wegscrollende menu's meestal niet op.
Deze dingen zeggen dus meer over CMS-en dan over frames. Zorg ervoor dat het CMS zich alleen met informatie-pagina's kan bezighouden, menu's e.d. worden toch maar heel weinig aangepast.
- Als je een website laadt in een frame van een andere website krijg je er maar dat deel te zien dat
in dat frame past.
- Er kan worden gesteld dat het goed gebruik van frames de toegankelijkheid voor de gebruikers verhoogt
en de toegankelijkheid voor webcrawlers van zoekmachines verlaagt.
Internet is gemaakt voor de gebruikers. Zoekmachines zijn een hulpmiddel voor het gebruik van internet en -dus- ondergeschikt aan het gemak van de gebruikers. Met zorgvuldig programmeerwerk zijn de beperkingen van webcrawlers goed te omzeilen.
Klik op de knop hiernaast om hem te starten.
- Alternatieven voor het gebruik van frames
Een modern alternatief voor frames is het gebruik van CSS (Cascading Style Sheets) om frames mee te simuleren. Daarmee kun je bereiken dat de besturing van de site permanent in beeld blijft, terwijl je de informatie-pagina's kunt scrollen. Noodzakelijke voorwaarde is dat het CSS goed is opgezet. Bij de huidige opzet van Content Mangement Systemen is dat (nog) niet noodzakelijk het geval. Bij meeste websites die CSS gebruiken ziet het menu (bovenaan elke pagina) er prachtig uit, maar scrollt het menu uit beeld als er (te) veel tekst op de pagina staat.
Goede voorbeelden van deze techniek staan op de (Engelstalige) website CSS play van Stuart Nicholls, in de sectie Layouts. Op deze website kun je een aantal bewerkingen daarvan vinden. Zie daarvoor het item Frames simuleren met CSS.
- Wat is de toekomst?
In januari 2008 is de eerste 'Working Draft' (werk concept) gepubliceerd van de standaard HTML5. Dat wordt de opvolger van HTML 4. In het licht van dit betoog is het opvallend dat de tags <frameset>, <frame> en <noframes> zijn vervallen. In tegenstelling tot sommige andere (aanvankelijk ook vervallen) tags, zijn <frame> en <noframes> er niet meer in teruggekeerd. Dat betekent dat een pagina-indeling met frames niet meer mogelijk is in HTML5.
Voor de goede orde: De ondersteuning van HTML 4 zal uit compatibiliteits-overwegingen de komende jaren gewoon doorgaan. Je hoeft een bestaande site er niet voor te gaan aanpassen. Voor een nieuwe website raad ik frames niet meer aan.
Op het moment dat dit wordt geschreven ondersteunen alle grote browsers de HTML5-specificatie vrijwel helemaal. De ondersteuning van CSS wordt ook nog steeds beter.
Er is hiermee een beweging in gang gezet die er toe zal leiden dat CSS, al of niet in combinatie met JavaScript, de enige manier is om een webpagina op te maken. Frames zoals in HTML 4 zullen hoe-dan-ook verdwijnen.
Jammer maar helaas.