Accueil Boite à Outils Menu dépliant pour les rubriques

Publié le : 26 janvier 2005
Imprimer Imprimer cet article

Auteur :
Alain Sichel

Alain Sichel
Menu dépliant pour les rubriques
Masquer ou afficher des éléments de vos pages

Il peut être utile de masquer certaines parties d’une page, notamment lorsque l’on présente des rubriques, toutes n’ont pas besoin d’être visibles quand on consulte la page, surtout quand on a un petit écran !

Cet article propose un JavaScript permettant de cacher ou de rendre visible un calque. Il est compatible avec une désactivation de JavaScript : dans ce cas, le calque reste visible, contrairement à beaucoup de scripts où le calque est caché par défaut.

Le script

Voici le code à mettre dans le <head> des pages [1] :

La fonction qui fait le changement visible/invisible est swap_couche(couche), elle est inspirée d’articles de SpipAge [2] et a besoin pour fonctionner des autres fonctions MM_findObj(n, d) MM_swapImage() et MM_showHideLayers() [3].

Le calque à masquer

Voici un exemple pour le calque d’une rubrique d’aide :

<div onclick="javascript:swap_couche('Aide')"><img name='triangleAide' src='/images/vide9.gif' border="0" alt="Déplier/Replier" /> Aide :</div><script language='JavaScript' type="text/javascript">
        <!--
        vis['Aide'] = 'hide';
        //-->
        </script><div id='LayerAide' onclick="javascript:swap_couche('Aide')">
Contenu à masquer ou à montrer
</div>

On peut avoir autant de calques à masquer qu’on le siouhaite dans sa page, chacun pourra être masqué ou affiché indépendamment des autres. Il faut simplement veiller à remplacer Aide par un autre nom pour que cela marche. Voici un deuxième exemple pour bien comprendre le changement de nom, pour le calque d’une rubrique Documentation :

<div onclick="javascript:swap_couche('Doc')"><img name='triangleDoc' src='/images/vide9.gif' border="0" alt="Déplier/Replier" /> Aide :</div><script language='JavaScript' type="text/javascript">
        <!--
        vis['Doc'] = 'hide';
        //-->
        </script><div id='LayerDoc' onclick="javascript:swap_couche('Doc')">
Contenu à masquer ou à montrer
</div>

Dans ces exemples, c’est un clic sur le calque (onclick=) qui rend celui-ci visible ou invisible, mais on peut remplacer par un autre évènement, double clic ondblclick= ou survol onmouseover=.

L’originalité du script

La particularité de ce script est d’utiliser une image transparente vide9.gif avant le titre de la rubrique. Ainsi, on ne voit rien... tant que le script n’est pas en action. Elle est remplacée par cacher ou voir si JavaScipt est activé, selon que la rubrique est visible ou masquée. Ceux qui ont désactivé JavaScript ne voient pas ces images qui correspondent au script en action, et ils peuvent voir le menu qui est déplié.

Le script est activé au chargement de la page en remplaçant la balise <body> par <body onload="swap_couche('Aide');">. Si on utilise le script pour plusieurs menus, il faut que chacun soit activé : <body onload="swap_couche('Aide');swap_couche('Doc');"> [4].

Ainsi, au chargement de la page le menus sont dépliés. Si on veut au contraire que le menu soit replié, il suffit de le charger une deuxième fois pour le rendre invisible :

<body onload="swap_couche('Aide');swap_couche('Aide');">

Exemple d’utilisation

Voici sur le site du CYES un exemple de l’utilisation de ce script pour l’affichage des rubriques dans la colonne gauche des pages :

Les deux menus dépliés
Menu Aide replié
déplié
replié


 

[1] Ou dans une feuille de style externe appellée par le code suivant mis dans le <head> :

<script language="JavaScript" type="text/javascript" src="/script.js"></script>

[2] Voir les articles Menu dépliant 1, 2 et 3.

[3] Ces fonctions sont reprises du code JavaScript proposé par Dreamweaver.

[4] Voici une actuce pour ceux qui utilisent des modèles pour leurs pages (personnellement j’utilisent des modèles créés par Dreamweaver), car il n’est alors pas facile de modifier <body onload="...;"> pour chaque page :

- pour la balise <body>, j’écris dans le modèle <body onload="cacher_voir();">,

- dans le head de chaque page, dans le champ <!-- #BeginEditable "doctitle" --> après le title, j’écris :

<script language="JavaScript" type="text/javascript">
<!--
function cacher_voir() {
                swap_couche('Doc');
                swap_couche('Aide');
        }
//-->
</script>

il suffit de rajouter la fonction swap_couche() pour chaque calque utilisé dans la page.


Document joint à l'article

Images voir.gif cacher.gif et vide9.gif

Cliquez ici pour réagir à cet article

Imprimer Imprimer cet article


Réactions à l'article :