Afficher / cacher ou masquer un div ou du texte en JavaScript

Dans ce nouveau tutoriel, je vous propose de voir comment afficher ou cacher un div ou n’importe quel autre texte ou élément HTML en utilisant du JavaScript et sans utiliser la librairie jQuery.

L’idée ne va être simplement de masquer un élément mais de laisser l’opportunité aux visiteurs de cacher ou d’afficher les div en cliquant sur certains éléments ou en passant leur souris à certains endroits.

Pour faire cela, nous allons jouer sur l’état de la propriété CSS display de l’élément HTML qu’on souhaite afficher ou masquer.

 

Afficher ou cacher un div, un texte, ou n’importe quel élément HTML en CSS

Il existe principalement deux méthodes pour cacher un élément HTML visible en CSS : on peut soit régler la valeur de la propriété visibility de l’élément sur visibility: hidden, soit régler son type d’affichage sur display: none.

Il existe cependant une différence de taille entre ces deux méthodes : appliquer un visibility: hidden sur un élément comme un div par exemple va simplement cacher cet élément mais ne va pas le retirer du flux de la page ce qui signifie que l’espace qu’il occupait lorsqu’il était visible va être conservé tandis qu’appliquer un display: none va non seulement masquer l’élément en question mais va en plus permettre aux autres éléments d’occuper l’espace de l’élément caché.

N’hésitez pas à aller lire mon article sur les différences entre visibility: hidden et display: none pour bien les comprendre.

 

Afficher ou cacher un div lors d’un clic

On veut que nos utilisateurs puissent cacher notre div lorsqu’il est affiché ou au contraire l’afficher lorsqu’il est caché en cliquant simplement sur un bouton.

Pour faire cela, on va utiliser l’évènement JavaScript click. Lors du clic sur le bouton, on va récupérer la valeur de la propriété display du div et la modifier : si la valeur est display: none, on la change en display: block et inversement.

Pour répondre à l’évènement click en JavaScript, on peut soit utiliser la méthode addEventListener() qui permet d’enregistrer une fonction qui sera appelée lors du déclenchement d’un évènement choisi, soit simplement utiliser la propriété onclick qui représente le gestionnaire d’évènement pour l’évènement click de l’élément courant.

Illustrons cela immédiatement avec un exemple concret. Pour cela, on va déjà créer une page HTML avec deux boutons et deux éléments div :

See the Pen
Tuto – Afficher / cacher div HTML en JavaScript #1
by Pierre (@pierregiraud)
on CodePen.

On peut également appliquer ne couleur de fond à nos deux div en CSS :

See the Pen
Tuto – Afficher / cacher div HTML en JavaScript #1
by Pierre (@pierregiraud)
on CodePen.

Il ne nous reste plus alors qu’à créer notre JavaScript :

See the Pen
Tuto – Afficher / cacher div HTML en JavaScript #1
by Pierre (@pierregiraud)
on CodePen.

Je présente ici les deux méthodes citées précédemment (afficher et cacher un div en utilisant addEventListener() et onclick).

On commence ici de manière classique par accéder à nos différents éléments HTML en JavaScript en utilisant document.getElementById() et on stocke les différentes références dans des variables.

On attache ensuite un gestionnaire d’évènement click à notre bouton togg1 avec addEventListener(). On va passer deux arguments à cette méthode : le nom d’un évènement qu’on souhaite prendre en charge ainsi que le code à exécuter (qui prendra souvent la forme d’une fonction) en cas de déclenchement de cet évènement.

J’utilise ici une fonction fléchée qui est une notation récente en JavaScript. La partie ()=>{} est équivalente à function(){}. La fonction fléchée est la fonction qui va s’exécuter lors du clic sur #togg1.

Le code de cette fonction commence par récupérer la valeur calculée (valeur courante) de la propriété display du div id="d1" avec getComputedStyle(d1).display et la compare à la valeur none en différence.

Si la valeur récupérée est bien différente de none (c’est-à-dire si le div est visible), on rentre dans le if qui modifie cette valeur afin qu’elle soit égale à none (ce qui cache le div).

Si la valeur récupérée est égale à none, c’est que le div est déjà caché. On rentre alors dans le else et on modifie cette valeur en display: block pour afficher le div.

La deuxième partie de mon code JavaScript produit également le même résultat (avec le bouton #togg2 et le div #d2 mais utilise cette fois-ci un attribut onclick et une fonction nommée classique plutôt que addEventListener() et une fonction fléchée.

Voici le résultat obtenu finalement :

See the Pen
Tuto – Afficher / cacher div HTML en JavaScript #1
by Pierre (@pierregiraud)
on CodePen.

 

Afficher ou cacher un div lors du survol

On va de la même façon pouvoir afficher / cacher des div ou n’importe quel élément en utilisant différents autres évènements JavaScript comme lors du survol de la souris sur un élément par exemple.

Pour faire cela, on peut par exemple utiliser les évènements mouseover et mouseout ou mouseenter et mouseleave en fonction de la situation et du résultat qu’on souhaite obtenir.

On peut illustrer cela en modifiant légèrement notre exemple précédent de la manière suivante :

Code HTML :

See the Pen
Tuto – Afficher / cacher div HTML en JavaScript #2
by Pierre (@pierregiraud)
on CodePen.

Code CSS :

See the Pen
Tuto – Afficher / cacher div HTML en JavaScript #2
by Pierre (@pierregiraud)
on CodePen.

Code JavaScript :

See the Pen
Tuto – Afficher / cacher div HTML en JavaScript #2
by Pierre (@pierregiraud)
on CodePen.

Résultat :

See the Pen
Tuto – Afficher / cacher div HTML en JavaScript #2
by Pierre (@pierregiraud)
on CodePen.

Cette fois-ci, on veut cacher et ou afficher des éléments selon que l’on passe la souris sur certains autres éléments ou qu’on retire la souris de ces éléments.

Dans notre cas, ce sont les paragraphe #p1 et la liste #l1 contenus dans nos div qui vont être masqués / affichés.

On cache ces éléments par défaut en leur appliquant un display : none. On va ensuite vouloir qu’ils s’affichent lorsque l’utilisateur place sa souris dans le div parent relatif à chaque élément, puis qu’ils soient cachés à nouveau lorsque l’utilisateur retire sa souris du div.

Pour cela, on va se servir ici des évènements mouseover (la souris rentre) et mouseout (la souris sortt) et on va à nouveau pouvoir utiliser soit la méthode addEventListener(), soit un attribut d’évènements pour répondre à ces évènements.

Laisser un commentaire