Introduction : qu'est-ce qu'un calque ?
1- exemple simple avec un calque qui s'ouvre
2- exemple simple avec un calque à fermer
3- plusieurs calques
Qu'est ce qu'un calque
?
En haut à droite de
cette page, vous voyez deux calques, un sans fond, l'autre avec. Il peut y avoir
un texte ou une image dedans. Quel intérêt ? Contrairement à
un texte ordinaire, et comme une image, le calque peut être déplacé,
être invisible puis visible. C'est un "objet", dont le code
le plus simple est <div id="NOM" style=" différentes
caractéristiques"> le texte </div>
Exemple
simple : Quelle est la nationalité d'Elis Peters ? cliquez ici pour avoir la réponse |
Coucou,
c'est un calque !
|
(voir sur le site EDUCNET, des pages ainsi construites)
CODE de la page (pour
savoir comment insérer un code, cliquer ici)
Voir plus bas les explications
Notre calque s'appelle ici "Layer1", il pourrait avoir
un autre nom mais ce doit être le même aux différents endroits
du code.
<html> |
EXPLICATIONS
Les textes en rouge sont des noms de variables personnels,
en bleu ce qui apparaît dans la page du navigateur.
<html> |
début de la page html début de la "tête" |
<script language="javascript"> <!-- |
début du javascript <!-- permet que les navigateurs qui ne comprennent pas le javascript n'affichent pas les lignes suivantes |
function ouvrir(){ | création d'une fonction qui ouvrira le cadre quand elle sera appelée. Nous choisissons son nom (ici "ouvrir). Tout fonction commence par "function", comporte une parenthèse ouverte et une fermée après son nom, et l'ouverture d'accolade "{" obtenue avec les touches AltGr et 4. |
if (document.getElementById) { document.getElementById("Layer1").style.visibility="visible"; } |
if = "si" indique le début d'un test, celui-ci est toujours inclus dans des parenthèses. Nous testons si le navigateur prend en charge l'objet getElementById ce qui est le cas d'Internet Explorer et de Netscape 6. Si c'est le cas la ligne suivante s'effectue : le calque appelé "Layer1" devient visible. |
if (document.layers) { //NS4.X seul document.Layer1.visibility="visible" } |
si le navigateur reconnaît l'objet document.layers, c'est-à-dire si c'est Netscape 4.5 ou 4.7, c'est cette ligne qui est effectuée. Le calque devient visible. |
} | nous fermons l'accolade ouverte au début de la fonction |
// --> </script> </head> |
//--> indique aux navigateurs qui ne prennent pas le javascript
en charge sa fin. </script> : fin du script. </head> : fin du "head" Indiquer la fin du script et la fin du "head" est obligatoire. |
<body> | début de la partie "body" de la page |
Quelle est la nationalité d'Elis Peters ? | question posée (une autre serait possible) |
<i><a href="javascript:ouvrir()">cliquez ici pour avoir la réponse</a></i> | <i> et </i> indique que ce qui se trouve entre
ces deux balises sera en italique. <a href="..."> et </a> indique que ce qui se trouve entre ces deux balises est en hypertexte : si l'on clique dessus, nous serons dirigé vers une page, ici vers la fonction ouvrir. javascript:ouvrir() appelle notre fonction |
<div id="Layer1"
style="position:absolute; left:432px; top:16px; width:161px; height:34px";
visibility: hidden"> <table width="161" border="1" bgcolor="#FFFFFF" bordercolor="#0000FF"> <tr> <td> <div align="center">Anglaise</div> </td> </tr> </table> </div> |
début du calque : il commence par <div id=" et finit avec
la dernière ligne </div> |
</body> </html> |
fin de la page : il faut fermer le body, puis le html |
a- En cliquant sur une croix
dans le calque
b- En cliquant sur le texte
le calque avec une croix |
Code avec Netscape 4.5 et 4.7
|
Code avec Internet Explorer et Netscape6
|
- insérer l'image d'une croix dans le calque
Layer1. Dans ce code, la croix est dans le même dossier que la page,
si vous avez créé un sous-dossier images, notez "../images/croix.jpg" |
<img src="croix.jpg" width="16" height="14" border="0"> | idem, c'est du html |
- faire un lien de la croix vers la fonction fermer() | <a href="javascript:fermer()"> ... le code précedent ...</a> | idem, c'est du html |
- écrire dans le "head" la fonction fermer (semblable à celle ouvrir, mais où la visibilité devient "invisible" (hidde pour Netscpae, hidden pour IE) | function fermer(){ document.Layer1.visibility="hidden" } |
function fermer(){ document.getElementById ("Layer1").style.visibility="hidden" } |
Code complet d'un calque, visible au départ, se
fermant grâce à une croix, avec test du navigateur. <html> <head> <script language="javascript"> <!-- function fermer(){ if (document.getElementById) { //IE5 ou Netscape 6 document.getElementById("Layer1").style.visibility="hidden"; } if (document.layers) { //NS4.X seul document.Layer1.visibility="hidden" } } // --> </script> </head> <body> <div id="Layer1" style="position:absolute; left:432px; top:16px; width:161px; height:34px; visibility: visible"> <table width="148" border="1" bgcolor="#FFFFFF" bordercolor="#0000FF"> <tr> <td> en cliquant sur une croix <a href="javascript:fermer()"><img src="../images/croix.jpg" width="16" height="14" border="0"></a> </td> </tr> </table> </div> </body> </html> |
fermer le calque en cliquant sur le texte |
Code avec Netscape
|
Code avec Internet Explorer
|
Le lien se fait sur le texte lui-même, la fonction est la même | <a href="javascript:fermer(3)">en cliquant sur le texte</a> | idem, c'est du html |
Code complet d'un calque, visible au départ, qui se ferme lorsque
l'on clique sur le texte, avec test du navigateur |
3- plusieurs calques qui s'ouvrent et se ferment |
Consignes
: cliquez sur la question pour avoir la réponse, sur la croix pour fermer
la réponse.
1- Quelle est la capitale de la France ?
2- Quel fleuve coule à Paris ?
3- Quel
est le département de Nice ?
Note: vous avez dû remarquer que l'alignement n'est pas parfait par rapport
aux questions, d'une part il diffère dans Netscape et Internet Explorer
et d'autre part il dépend de la taille des caractères choisie
par l'utilisateur et de la dimension de la page. Il n'y a pas de solution en
javascript qui n'est pas un langage de programmation très strict.
Le code complet (en dessous les explications)
<html> function ouvrir(numlayer){ |
Le code expliqué
<html> <head> < script language="JavaScript"> <!-- |
début de la page html début de la "tête" début du script |
function ouvrir(numlayer){ nom="Layer"+numlayer if (document.getElementById) { //IE5 ou Netscape 6 document.getElementById(nom).style.visibility="visible"; } if (document.layers) { //NS4.X seul document.layers[nom].visibility="visible" } } |
Voir plus haut la création de fonctions. Les lignes de code diffèrent selon que l'on a |
function fermer(numlayer){ nom="Layer"+numlayer if (document.getElementById) { //IE5 ou Netscape 6 document.getElementById(nom).style.visibility="hidden"; } if (document.layers) { //NS4.X seul document.layers[nom].visibility="hidden" } } |
La fonction fermer est identique, mais rend invisible le calque (hidden) |
//--> </script> </head> <body> |
fin du script, du head, début du body |
1-<a href="javascript:ouvrir(1)">
Quelle est la capitale de la France ? </a><BR> 2-<a href="javascript:ouvrir(2)"> Quel fleuve coule à Paris ? </a><BR> 3-<a href="javascript:ouvrir(3)"> Quel est le département de Nice? </a><BR> |
Les questions, telles quelles apparaissent dans
le navigateur sont en bleu. <BR> indique un retour à la ligne Un lien est créé vers la fonction "ouvrir" si l'on clique sur le texte de la question. Tout lien se crée avec <a href="..."> </a> |
<div id="Layer1"
style="position:absolute; left:432px; top:16px; width:161px; height:34px;
visibility:hidden"> <table width="161" border="1" height="34" bgcolor="#FFFFFF" bordercolor="#CC0099"> <tr> <td width="148"> <div align="center"><font color="#000000">Paris</font></div> </td> <td width="13"> <div align="right"><font color="#000000"><a href="javascript:fermer(1)"><img src="../images/croix.jpg" width="16" height="14" border="0"></a></font></div> </td> </tr> </table> </div> <div id="Layer2" style="position:absolute; left:432px; top:60px; width:161px; height:34px; visibility:hidden"> <table width="161" border="1" height="34" bgcolor="#FFFFFF" bordercolor="#CC0099"> <tr> <td width="148"> <div align="center"><font color="#000000">La Seine </font></div> </td> <td width="13"> <div align="right"><font color="#000000"><a href="javascript:fermer(2)"><img src="../images/croix.jpg" width="16" height="14" border="0"></a></font></div> </td> </tr> </table> </div> |
Les deux premiers calques. |
<div id="Layer3"
style="position:absolute; left:432px; top:100px; width:161px; height:34px;
visibility:hidden"> <table width="161" border="1" height="34" bgcolor="#FFFFFF" bordercolor="#CC0099"> <tr> <td> <div align="center">Les Alpes Maritimes<font color="#000000"><a href="javascript:fermer(3)"><img src="../images/croix.jpg" width="16" height="14" border="0"></a></font></div> </td> </tr> </table> </div> |
Le 3e calque est un peu plus simple car il n'a qu'une colonne, le texte étant plus long, la croix se place forcément à droite. |
</body> </html> |
fin du body fin de la page html |
Pour que Netscape 4.5 et 4.7 affichent correctement les calques, il est conseillé
d'intégrer au script les lignes suivantes qui rechargent la page pour
la mettre à la taille maximale.
<script language="JavaScript"> <!-- function MM_reloadPage(init) { //reloads the window if Nav4 resized if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); } MM_reloadPage(true); // --> </script> |
des calques qui bougent |
Réalisé par Isabelle Gautier, la diffusion de cet article est protégée par la licence LLDL-v1, Licence de Libre Diffusion des Documents, http://pauillac.inria.fr/~lang/licence/v1/lldd.html . Vous pouvez libremet utiliser, modifier et diffuser ce document mais uniquement à titre gratuit.