Frames |
|
Handleiding HTML |
Inhoud Index |
|
In dit onderdeel komen aan de orde Introductie, Elementen, Opbouw frames, Voorbeelden frames, Frames niet ondersteund, Document openen in frame, Meerdere frames tegelijk vervangen, Frameranden, Frames en JavaScript, Inline frames, Uitlijnen inline frames en Document openen in inline frame. |
IntroductieMet behulp van framing kan een venster onderverdeeld worden in meerdere frames of sub-vensters. In elk frame kan een document geopend worden. De frames werken onafhankelijk van elkaar, een document in het ene frame kan vooral een statische weergave hebben (bijvoorbeeld een titelbalk of een inhoudsopgave), terwijl in een ander frame door opeenvolgende documenten heen gelopen wordt. Vanuit elk document kunnen hyperlinks nieuwe documenten openen in hetzelfde of in een ander frame. Frames worden gemaakt met de elementen FRAMESET en FRAME.
|
ElementenVoor het maken van documenten met (inline) frames zijn de volgende elementen beschikbaar: |
FRAME |
FRAMESET |
IFRAME |
NOFRAMES |
|
Opbouw framesHet gebruiken van frames is niet bijzonder ingewikkeld, mits je maar systematisch te werk gaat.
De eerste stap is het verdelen van het gehele venster ofwel verticaal in rijen, ofwel horizontaal in kolommen. In dit geval moet het venster in twee kolommen verdeeld worden. Dat leidt tot de volgende opbouw:
De tweede stap is het vervangen van FRAME A door een frameset met twee rijen:
De derde stap is het vervangen van FRAME B door een frameset, nu met drie rijen:
Tenslotte wordt FRAME B1 vervangen door een frameset met twee kolommen.
|
Voorbeelden framesIn het volgende voorbeeld wordt het venster horizontaal verdeeld in twee frames:
Indien de browser frames ondersteunt, kun je het resultaat bekijken in een nieuw venster. |
In het voorgaande voorbeeld is geen gebruik gemaakt van het NORESIZE attribuut. De rand tussen de frames kan daarom met de muis verplaatst worden. Door in het volgende voorbeeld het NORESIZE attribuut aan het eerste FRAME element toe te voegen, kan dit niet meer:
Bekijk het resultaat in een nieuw venster. |
In het volgende voorbeeld van een document met geneste framesets (een frameset binnen een frameset) zijn de rijen en kolommen op verschillende manieren gedefinieerd:
Indien de browser frames ondersteunt, kun je het resultaat bekijken in een nieuw venster. |
In het volgende voorbeeld worden enkele attributen van het FRAME element toegelicht. In het ingesloten frameset zijn dat de attributen MARGINWIDTH en MARGINHEIGHT, waarmee de afstand bepaald kan worden tussen de inhoud van een frame en de linker- en rechterrand, respectievelijk de boven- en onderrand van het frame. In de onderste twee frames gaat het om het SCROLLING attribuut.
Bekijk het resultaat in een nieuw venster. |
Frames niet ondersteundAls bovenstaande voorbeelden worden geopend in een browser die geen frames ondersteunt, dan krijgt de gebruiker een leeg venster te zien. Om dat te voorkomen, moet je extra voorzieningen treffen. Bij de ontwikkeling van frames is daarvoor het NOFRAMES element bedacht, dat geplaatst moet worden in één van de framesets. De door het NOFRAMES element ingesloten inhoud wordt niet weergegeven door een browser die frames ondersteunt en is dus alleen in andere browsers zichtbaar. |
In het volgende voorbeeld is in het NOFRAMES element een korte boodschap aan de gebruiker opgenomen.
De gebruiker met een browser die geen frames ondersteunt, krijgt alleen hetgeen staat tussen het begin en einde van het NOFRAMES element te zien. |
Deze oplossing is niet zo aardig voor de gebruiker, omdat je hem of haar ofwel dwingt een andere browser te gaan gebruiken, ofwel de toegang tot jouw pagina's ontzegt. Daarnaast beperk je op deze manier de verspreiding van je eigen informatie over het net. Het is daarom beter ook te zorgen voor een goede noframes-versie. In het NOFRAMES element neem je dan een verwijzing naar de noframes-versie op.
Je kunt het resultaat bekijken in een nieuw venster. In een browser die geen frames ondersteunt, zie je de alleen de inhoud van het rechter frame. Wanneer je de kleur van de achtergrond, de tekst en de hyperlinks van de inhoud van het NOFRAMES element wilt bepalen, kun je ook het BODY element opnemen.
|
Document openen in frameSpeciale aandacht verdient het gebruik van hyperlinks in documenten in frames. Standaard wordt een document geopend in het frame waarin de hyperlink staat. Vaak is dat echter niet gewenst en wil je het document juist in een ander frame openen. In andere gevallen wil je het document helemaal niet in een frame openen, maar juist in het volledige venster van de browser. |
In het volgende voorbeeld is aan elk van de frames een naam gegeven met behulp van het NAME attribuut.
In het documenten in het linker frame zijn de URI's als volgt opgenomen: Indien de browser frames ondersteunt, kun je het resultaat bekijken in een nieuw venster. |
Naast een zelf bepaalde framenaam kun je in een TARGET attribuut ook gebruik maken van enkele voor-gedefinieerde namen: "_blank", "_parent", "_top" en "_self". In het volgende voorbeeld wordt gebruik gemaakt van de voor-gedefinieerde framenaam "_blank". Het document wordt daardoor geopend in een nieuw browser-venster. Hetzelfde gebeurt overigens als je gebruik maakt van een niet gedefinieerde framenaam.
Het resultaat zie je in een nieuw venster. |
Als je de voor-gedefinieerde framenaam "_parent" gebruikt wordt een hyperlink geopend in de parent van het huidige frameset. Dat komt er op neer dat het huidige frameset vervangen wordt door het in de link genoemde bestand.
Bekijk in een nieuw venster hoe het werkt. Met de voor-gedefinieerde framenaam "_top" wordt een document geopend in het volledige venster van de browser.
|
Indien je veel hyperlinks in een document hebt, dan kan het handig zijn gebruik te maken van het BASE element met daaraan toegevoegd het TARGET attribuut. Je geeft daarmee aan dat alle URI's in het document geopend moeten worden in een frame met de opgegeven naam. In de URI's zelf hoef je dan geen gebruik meer te maken van het TARGET attribuut. Voor uitzonderingen op de regel gebruik je in de URI wel het TARGET attribuut (het TARGET attribuut in de URI gaat boven het TARGET attribuut in het BASE element). Zie ook de beschrijving bij het onderdeel Hyperlinks.
In een nieuw venster zie je hoe het werkt. Wanneer het TARGET attribuut van het BASE element verwijst naar een ander frame en je wilt een document openen in het frame waarin de hyperlink staat, dan kun je als waarde van het TARGET element van bijvoorbeeld het A of AREA gebruik maken van de voor-gedefinieerde framenaam "_self". |
Meerdere frames tegelijk vervangenSoms wil je niet alleen de inhoud van één frame vervangen, maar van meerdere frames tegelijkertijd. Dat kan met HTML indien deze frames samen een frameset vormen, dat je als geheel kunt vervangen. Dat is in het volgende voorbeeld het geval met de frames links 1 en rechts 1. Deze frames kunnen dus in één keer vervangen worden door de frames links 2 en rechts 2. Bekijk in een nieuw venster hoe het werkt. Als je van plan bent een compleet frameset te vervangen, moet je daar bij de opzet van je site vanaf het begin rekening mee houden. Normaal zou het document waarin de frames uit het voorbeeld worden gedefinieerd, de volgende opbouw hebben:
Om de onderste twee frames tegelijkertijd te kunnen vervangen, moet het tweede frameset opgenomen worden in een apart document. Het eerste document krijgt de volgende opbouw:
In het document frameonder1.htm wordt het frameset gedefinieerd, dat de onderste twee frames bevat:
Om de onderste twee frames in één keer te vervangen, kun je nu in willekeurig welk frame een hyperlink opnemen met de volgende opbouw:
Het document frameonder2.htm heeft dezelfde opbouw als het document frameonder1.htm, alleen verwijst het SRC attribuut van de FRAME elementen naar andere documenten. In de praktijk zullen de te vervangen frames lang niet altijd niet samen één frameset vormen. Dat is bijvoorbeeld het geval in het volgende voorbeeld: In HTML heb je dan slechts de mogelijkheid het complete venster te wijzigen en in het te openen document alle frames opnieuw te definiëren. Dus ook het frame wat helemaal niet vervangen hoeft te worden. Als je vaker meerdere frames tegelijkertijd wilt vervangen, levert de beschreven methode behoorlijk wat werk en extra documenten op. Als alternatief wordt daarom vaak gebruik gemaakt van een oplossing met JavaScript. Daarmee kun je ook eenvoudig frames uit verschillende framesets tegelijk vervangen. Nadeel van het werken met JavaScript is wel, dat het gewenste effect niet bereikt wordt als de bezoeker het gebruik van JavaScript heeft uitgesloten. |
FramerandenStandaard worden frameranden weergegeven in 3-D. De dikte van de randen hangt af van de browser. Wil je werken met niet standaard frameranden, dan moet je er rekening mee houden dat niet elke browser hiervoor dezelfde attributen gebruikt en dat de weergave met hetzelfde attribuut niet in elke browser gelijk is. Het FRAMEBORDER attribuut van het FRAME element bepaalt of wel of geen framerand weergegeven moet worden. Met de waarde "1" wordt tussen de frames de standaard 3-D rand geplaatst. De waarde "0" zorgt ervoor dat de 3-D rand niet wordt weergegeven, maar omdat de ruimte tussen de frames daarbij niet ook wordt weggelaten, is het resultaat een "vlakke" rand. De dikte van de frameranden wordt bepaald met het BORDER attribuut van het FRAMESET element. Dit attribuut wordt ondersteund door Netscape Navigator, Opera en Microsoft Internet Explorer 4 en hoger. Hierna is te zien hoe de verschillende versies van Netscape Navigator, Microsoft Internet Explorer en Opera de frameranden weergegeven: de breedte in pixels en in 3-D of "vlak". In de eerste tabel is te zien dat bij Microsoft Internet Explorer 3 en hoger het FRAMESPACING attribuut en bij Opera 4 en Internet Explorer 5 het BORDER attribuut de 3-D randen 3 pixels dikker weergeeft dan je op grond van de waarde van deze attributen zou verwachten. Dat komt omdat in deze gevallen de waarde toegepast wordt op de ruimte tussen de 3-D randen. Omdat Opera met een versienummer lager dan 4 het FRAMEBORDER attribuut niet ondersteunt, wordt de rand altijd in 3-D weergegeven (behalve bij BORDER="0"). Als het BORDER attribuut gebruikt wordt, is de dikte van de rand in deze gevallen het dubbele van de opgegeven waarde. Door Netscape Navigator 2 worden de attributen BORDER en FRAMESPACING niet ondersteund. De rand wordt daardoor in alle gevallen in 3-D en 5 pixels breed weergegeven. |
FRAMEBORDER="1" | NN 3/4 | MSIE 3 | MSIE 4 | MSIE 5 | OP 2/3 | OP 4 |
- | 5px 3-D | 5px 3-D | 5px 3-D | 5px 3-D | 3px 3-D | 3px 3-D |
BORDER="10" | 10px 3-D | 5px 3-D | 10px 3-D | 13px 3-D | 20px 3-D | 13px 3-D |
FRAMESPACING="10" | 5px 3-D | 13px 3-D | 13px 3-D | 13px 3-D | 3px 3-D | 3px 3-D |
BORDER="10" FRAMESPACING="10" |
10px 3-D | 13px 3-D | 13px 3-D | 13px 3-D | 20px 3-D | 13px 3-D |
FRAMEBORDER="0" | NN 3/4 | MSIE 3 | MSIE 4 | MSIE 5 | OP 2/3 | OP 4 |
- | 5px vlak | 2px vlak | 2px vlak | 2px vlak | 3px 3-D | 0px vlak |
BORDER="10" | 10px vlak | 2px vlak | 5px vlak | 10px vlak | 20px 3-D | 10px vlak |
FRAMESPACING="10" | 5px vlak | 10px vlak | 10px vlak | 10px vlak | 3px 3-D | 0px vlak |
BORDER="10" FRAMESPACING="10" |
10px vlak | 10px vlak | 10px vlak | 10px vlak | 20px 3-D | 10px vlak |
In het volgende voorbeeld is de weergave te zien van de verschillende mogelijkheden voor 3-D en "vlakke" frameranden. Voor de mogelijkheid, waarbij de frameranden in Netscape Navigator 3 en hoger, Microsoft Internet Explorer 3 en hoger en in Opera 4 "vlak" en 10 pixels breed zijn, is de opbouw als volgt:
Bekijk het voorbeeld in een nieuw venster. |
Om in het vorige voorbeeld de frameranden geheel weg te laten vallen, moet je de waarde van het BORDER en het FRAMESPACING attribuut op "0" stellen:
Bekijk het resultaat in een nieuw venster. Bij frames waarvan de randen niet meer zichtbaar zijn, kan het soms handig zijn de inhoud van een frame zo dicht mogelijk in de linker bovenhoek te plaatsen. Je doet dat door aan het FRAME element de attributen MARGINWIDTH en het MARGINHEIGHT toe te voegen en beide de waarde "1" te geven. |
De 3-D frameranden zijn standaard bij alle browsers grijs. De "vlakke" frameranden hebben bij Netscape Navigator 3 en 4 en bij Microsoft Internet Explorer 3 en 5 standaard de achtergrondkleur van de browser en zijn bij Internet Explorer 4 en Opera 4 grijs. In het volgende voorbeeld is de weergave te zien van frameranden in kleur, zowel in 3-D als "vlak". Voor de mogelijkheid, waarbij de frameranden in zowel Netscape Navigator 3 en hoger als in Microsoft Internet Explorer 3 en hoger in 3-D zijn en de attributen BORDER en FRAMESPACING de waarde 10 hebben, is de opbouw als volgt:
Bekijk hoe de browser de verschillende frameranden in een nieuw venster weergeeft. |
In het vorige voorbeeld is voor alle frames dezelfde kleur voor de frameranden gedefinieerd. Dat had ook voor elk frame een andere kleur mogen zijn. Waar de frames aan elkaar grenzen moet de browser dan bepalen welke kleur gebruikt wordt. Elke browser hanteert daarvoor een eigen methode, die niet alleen afwijkt van de van andere browsers, maar bovendien nogal eens onverwachte resultaten oplevert. Het gebruik van meerdere kleuren voor de frameranden is daarom niet echt aan te bevelen. Bekijk een voorbeeld in een nieuw venster, waarin voor elk frame een eigen kleur is opgegeven. |
In Microsoft Internet Explorer 3 en 4 zijn kunnen niet alleen 3-D frameranden verplaatst worden, ook "vlakke" frameranden. Wanneer je niet wilt dat dit gebeurt, dan moet je het NORESIZE attribuut aan het FRAME element toevoegen:
Bekijk het effect met Microsoft Internet Explorer in een nieuw venster. |
Frames en JavaScriptJavaScript wordt veel gebruikt in combinatie met frames. Mogelijkheden zijn onder meer:
Hoewel JavaScript in principe buiten het bereik van deze handleiding valt, zijn in een apart document enkele voorbeelden opgenomen van de genoemde mogelijkheden. |
Inline framesIn het volgende voorbeeld wordt met het IFRAME element een inline frame van 275 pixels breed en 105 pixels hoog gedefinieerd. Met behulp van het SRC attribuut wordt aangegeven welk document in het frame geopend moet worden.
Het resultaat kun je zien als je een browser gebruikt, die het IFRAME element ondersteunt. Andere browsers herkennen het IFRAME element niet in de body van een document en geven alleen de tekst weer, welke geplaatst is tussen het begin en het eind van het IFRAME element. Bekijk het voorbeeld in een nieuw venster. Door het FRAMEBORDER attribuut op te nemen met de waarde "0" kun je de 3-D frameranden weg laten.
Bekijk het resultaat in een nieuw venster. Wanneer je het document in het inline frame dezelfde achtergrondkleur geeft als het document waarin het frame geopend wordt, dan lopen beide documenten in elkaar over. Je kunt dit zien in een nieuw venster. Indien je niet wilt dat de schuifbalk wordt weergegeven, kun je er voor kiezen deze weg te laten. Je gebruikt daarvoor het SCROLLING attribuut met de waarde "no". Je moet er natuurlijk wel voor zorgen dat alles wat je wilt laten zien binnen het frame past.
Bekijk het resultaat in een nieuw venster. Met behulp van de attributen MARGINHEIGHT en MARGINWIDTH kun je de afstand van de inhoud van het document in het inline frame tot de rand bepalen.
Bekijk het resultaat in een nieuw venster. Wanneer je geen frameranden toepast, wil je de inhoud van het frame misschien zoveel mogelijk in lijn hebben met de inhoud van het document. Je kunt dat doen door de waarde van de attributen MARGINHEIGHT en het MARGINWIDTH zo klein mogelijk te kiezen. Hoewel deze waarde volgens HTML 4.0 minimaal "1" moet zijn, accepteert Microsoft Internet Explorer ook "0". Het resultaat kun je zien in een nieuw venster. Wanneer je per zijde de afstand tussen de inhoud van het document en de framerand wilt bepalen, kun je aan het BODY element in het document in het inline frame één of meer van de alleen door Microsoft Internet Explorer ondersteunde attributen LEFTMARGIN, TOPMARGIN, RIGHTMARGIN en BOTTOMMARGIN toevoegen:
Bekijk het resultaat in een nieuw venster. In een inline frame kan net als bij gewone frames elk gewenst document geopend worden. Het kan dus een gewoon document zijn met bijvoorbeeld tekst, afbeeldingen en hyperlinks, maar ook een document met gewone frames of weer nieuwe inline frames. In de volgende afbeelding wordt dit gedemonstreerd. Het document in het inline frame bevat 3 frames en het document in het bovenste frame bevat weer een inline frame. Klik op de afbeelding en bekijk de weergave in een nieuw venster. |
Uitlijnen inline framesVoor het uitlijnen van tekst naast een inline frame kun je gebruik maken van het ALIGN attribuut. Wanneer je gebruik maakt van de waarden "top", "middle" of "bottom", wordt de eerste regel op de aangegeven hoogte naast het inline frame geplaatst en komen eventuele volgende regels onder het inline frame te staan.
Bekijk het voorbeeld in een nieuw venster. Wanneer je het ALIGN attribuut gebruikt met de waarden "left" of "right" wordt het inline frame links of recht in het venster geplaatst en loopt de tekst over de volle hoogte naast het inline frame door. Om er voor te zorgen dat een volgende alinea pas na het inline frame geplaatst wordt, kun je gebruik maken van het CLEAR attribuut in het BR element.
Bekijk het voorbeeld in een nieuw venster. Wanneer je wat afstand wilt houden tussen het inline frame en de aangrenzende tekst, dan kun je gebruik maken van het HSPACE en VSPACE attribuut.
Je ziet het resultaat in een nieuw venster. |
Document openen in inline frameOp vergelijkbare wijze als bij gewone frames, kunnen documenten geopend worden in inline frames. Daarvoor is het nodig dat aan de inline frames een naam gegeven wordt door middel van het NAME attribuut. In de hyperlinks wordt een inline frame, waarin een document geopend moet worden, aangegeven met behulp van het TARGET attribuut van bijvoorbeeld het A of het AREA element. In het volgende voorbeeld worden enkele mogelijkheden gedemonstreerd. De inline frames in dit voorbeeld zijn als volgt opgebouwd:
De opbouw van een URI is bijvoorbeeld:
Bekijk het voorbeeld in een nieuw venster. |
Inhoud Handleiding HTML Index Inhoud Frames
|