Frames en HTML 4.0
Les Frames ne sont rien d'autre que des fenêtres dans des fenêtres. Dans une
fenêtre de frames, le tag double <frameset> et </frameset> remplace
le tag habituel <body> et </body>. C'est <frameset> qui définit
le nombre de frames de la fenêtre et si le découpage est horizontal ou vertical.
L'intérieur du tag <frameset> doit ensuite contenir autant de tags simples
<frame> que nécessaire. Un petit exemple valant mieux qu'un long discours
...
Trois frames horizontaux : de largeur respectives 20% pour le premier, 40%
pour le dernier et "ce qui reste" pour celui du milieu.
<frameset cols="20%,*,40%">
<frame>
<frame>
<frame>
</frameset>
Trois frames verticaux : de hauteur respectives 100 points pour le premier, 150 points pour le dernier et "ce qui reste" pour celui du milieu.
<frameset rows="100,*,150">
<frame>
<frame>
<frame>
</frameset>
<frameset> ne peut contenir que l'un des mots clefs "cols" ou "rows" et en aucun cas les deux. Pour obtenir un découpage vertical ET horizontal, il faut découper dans un sens puis redécouper l'un des frames obtenus dans l'autre sens.
Notons dans cet exemple l'utilisation de deux nouveaux attributs de <frame>
- "noresize" interdit le redimensionement à la souris de l'un des frames mais pas de l'autre
- scrolling="yes ou scrolling="no" qui OBLIGE ou INTERDIT l'affichage de barres de défilement. En l'absence d'indication de scrolling le navigateur n'affichera les barres que si le besoin s'en fait sentir.
<frameset cols="20%,80%">
<frame noresize scrolling="no">
<frameset rows="30%,70%">
<frame scrolling="yes">
<frame>
</frameset>
</frameset>
Découper les fenêtres dans tous les sens est bien beau encore faut-il y mettre quelque chose. Utilisons les pages des leçons précédentes pour remplir nos frames.
Notons dans cet exemple l'utilisation de deux nouveaux attributs de <frame>
- "marginwidth=..." définit l'espace (en points) entre les bords verticaux du frame et le texte
- "marginheight=..." définit l'espace (en points) entre les bords horizontaux du frame et le texte
<frameset cols="20%,80%">
<frame noresize scrolling="no">
<frameset rows="30%,70%">
<frame scrolling="yes" src="hyperliens.htm" marginheight=70>
<frame src="tableaux.htm" marginwidth=50>
</frameset>
</frameset>
L'une des utilisations les plus courantes des frames consiste en l'obtention de sommaires. Pour se faire, il est indispensable de nommer les frames afin d'être capable d'indiquer à un lien dans quelle frame il doit afficher sa page. On utilise alors le mot clef "name" dans le tag <frame> et le mot clef "target" dans le tag d'hyperlien.
Le tag double <noframe> et </noframe> permet de penser aux gens (de moins en moins nombreux) disposant de navigateurs incapables d'afficher les frames. Ce tag peut avantageusement être remplacé par le simple tag <body>
<frameset cols="20%,80%">
<frame noresize scrolling="no" src="som_frame.html">
<frameset rows="30%,70%">
<frame scrolling="yes" src="hyperliens.html" marginheight=70 name=haut_droite>
<frame src="tableaux.html" marginwidth=50 name=bas_droite>
</frameset>
</frameset>
<noframe>
Cette page comporte des frames mais votre navigateur ne peut les afficher ... désolé
</noframe>
Notre fichier de sommaire comporte alors des liens avec indication de cible ("target").
<a href="hyperliens.html" target="haut_droite">hyperliens en haut</a>
<a href="hyperliens.html" target="bas_droite">hyperliens en bas</a>
<a href="tableaux.html" target="haut_droite">tableaux en haut</a>
<a href="tableaux.html" target="bas_droite">tableaux en bas</a>
<a href="tableaux.html" target="_top">tableaux en pleine page</a>
Enfin, l'attribut "border=..." dans le tag </frameset> permet d'obtenir des bordures invisibles (ou trés grosses).
<frameset rows="30%,70%" border=0>