Klik hier voor de inhoudsopgave

HTML op het net - Printversie - Frames
Originele URL: http://html.op-het.net/tekst/frames.html

Inleiding

Met zogenaamde 'frames' is het mogelijk het scherm in vensters te verdelen, die apart van elkaar kunnen scrollen. Dit is bijvoorbeeld handig voor links de inhoudsopgave en rechts de echte pagina. Als de pagina dan naar beneden wordt gescrolld blijft de inhoudsopgave altijd zichtbaar.
Frames worden ondersteund door Netscape Navigator vanaf versie 2 en Microsoft Internet Explorer vanaf versie 3.

<FRAMESET>

Begin van de definitie van de frames.

AttribuutResultaat
COLS=het scherm verdelen in kolommen:
"20%,80%"2 kolommen, de linker is 20% van de totale breedte, de rechter 80%
"20,50%,*"3 kolommen, de linker is 20 pixels breed, de middelste 50% van de totale breedte, en de rechterkolom is zo breed als de ruimte die dan nog over is
ROWS=het scherm verdelen in rijen. De werking is verder hetzelfde als COLS
BORDER="n"de breedte van de framebalk in pixels
BORDERCOLOR="kleur"de kleur van de framebalk. kleur kan een zelf gemixte kleur (="#rrggbb") zijn of een kleur uit de kleurentabel
FRAMEBORDER="no"wel (="yes") of geen (="no") framebalken
FRAMESPACING="n"de ruimte tussen de frames

Voorbeeld

*Hieronder staat de globale indeling van een pagina met een <FRAMESET>. De attributen in de tags zijn weggelaten.
<HTML>
<HEAD>
  <TITLE>Paginatitel</TITLE>
</HEAD>
<FRAMESET>
  <FRAME>
  <FRAME>
  <NOFRAMES>
    <BODY>
    Hier komt een pagina die alleen zichtbaar is als de browser geen frames ondersteund
    </BODY>
  </NOFRAMES>
</FRAMESET>
</HTML>

<FRAME>

De inhoud van de frames definiëren.

AttribuutResultaat
SRC="bestand.html"de locatie van het html-bestand dat in het frame moet komen
NAME="naam"de naam van het frame. Naar deze naam moet je verwijzen als je vanuit een ander frame de inhoud van dit frame wil veranderen (zie ook bij TARGET)
SCROLLING="auto"aangeven of er altijd (="yes"), nooit (="no") of alleen als het nodig is (="auto") scrollbalken moeten verschijnen
NORESIZEals je dit toevoegt kan de bezoeker het frame niet van grootte veranderen
MARGINHEIGHT=nde afstand tussen het frame en de inhoud van het frame (boven en onder)
MARGINWIDTH=nde afstand tussen het frame en de inhoud van het frame (links en rechts)

Tips

* Voor helemaal onzichtbare frames (in zowel Netscape als Internet Explorer) kan je het volgende voorbeeld gebruiken:
<FRAMESET COLS="100,*" FRAMESPACING=0 BORDER=0 FRAMEBORDER="no">
<FRAME SRC="frame1.html" NAME="frame1">
<FRAME SRC="frame2.html" NAME="frame2">
</FRAMESET>
* Microsoft Internet Explorer laat standaard een randje van 1 pixel over tussen de rand en de inhoud van een pagina. Netscape Navigator hanteert een grotere rand (ongeveer 5 pixels). Als je bij een frame MARGINWIDTH=1 MARGINHEIGHT=1 toevoegt, laat Netscape Navigator ook maar een randje van 1 pixel over, met als gevolg dat je pagina er in Internet Explorer en in Netscape hetzelfde uitziet! Dit is heel handig als je bijvoorbeeld een afbeelding op een exacte positie boven een achtergrondafbeelding wil plaatsen.

<NOFRAMES>tekst</NOFRAMES>

tekst wordt getoond als de browser geen frames ondersteunt. Dit kan een melding zijn dat deze pagina's frames gebruiken en een link naar de pagina zonder frames. Er kan dan nog een <BODY> en </BODY> toegevoegd worden (zie het voorbeeld).

</FRAMESET>

Einde van de definitie van de frames.

TARGET="naam"

TARGET is een extra attribuut voor een link. Dit attribuut geeft aan in welk frame de link geladen moet worden als die aangeklikt wordt. Er zijn ook speciale 'targets':
TARGET="framenaam"de link wordt getoond in het frame met de naam "naam"
TARGET="_top"de link wordt getoond op het hele scherm (alle frames worden gewist)
TARGET="_self"de link wordt getoond in het frame waar de link staat
TARGET="_parent"de link wordt getoond met frames van vorige <FRAMESET> (bij meerder frames in elkaar)
TARGET="_blank"de link wordt getoond in een nieuw venster zonder naam
Als de framenaam niet bestaat wordt er een nieuw venster van de browser gestart en wordt de link daarin getoond. Dat venster krijgt dan de naam die achter de TARGET is opgegeven.

Tip

* Als de meeste of alle links naar hetzelfde frame verwijzen, is het handig om een <BASE TARGET="framenaam"> toe te voegen in de <HEAD>-sectie van het document. Voor meer informatie over het gebruik van deze tag zie de Algemeen-pagina.

Voorbeeld

*<A HREF="inhoud.html" TARGET="inhoud">tekst</A>

JavaScript tip

Stel, je hebt vier frames die we voor het gemak even frame1, frame2, frame3 en frame4 noemen. Als je wilt dat er in twee frames tegelijkertijd een ander document geladen moet worden, dan lukt dat niet met HTML.
Het kan echter wel met JavaScript:

<HTML><HEAD><TITLE>Titel</TITLE>
<SCRIPT LANGUAGE="JavaScript">
<!--

function LaadTweeFrames(EersteBestand,TweedeBestand) {
  parent.frame1.location = EersteBestand;
  parent.frame2.location = TweedeBestand;
  return true;
}

//-->
</SCRIPT>
</HEAD><BODY>
<A HREF="JavaScript:LaadTweeFrames('file1.html','file2.html')">Klik!</A>
</BODY></HTML>


Op deze manier gebeurt er echter niets als de browser geen JavaScript ondersteunt of als die optie uitstaat. Dat kan je verhelpen door de op één na laatste regel te veranderen in:

<A HREF="index2.html" TARGET="_top" onClick="LaadTweeFrames('file1.html','file2.html'); return false">Klik!</A>

Op deze manier wordt de JavaScript code gewoon uitgevoerd als er op de link geklikt wordt, maar door de return false wordt de link zelf niet uitgevoerd! Zo wordt het bestand index2.html geladen (met een nieuwe frameset) als er geen JavaScript ondersteund wordt.


Laatste wijziging: 28-09-2002 - Copyright © 1996-2000 Bas Jansen (www.basjansen.com) - URL: http://html.op-het.net/printen/frames.html