Une modale doit-elle se fermer au clic extérieur ?
En Bref : L'essentiel à retenir
- La bonne réponse dépend de ce que la modale attend : une décision obligatoire, une simple information, ou un motif dérivé comme un tiroir latéral.
- Un dialogue qui exige une décision ne doit se fermer ni au clic extérieur ni à Échap : il faut un bouton explicite d'annulation.
- Un dialogue purement informatif gagne à se fermer des deux façons, qui doivent alors se comporter identiquement.
- Quel que soit le cas, le focus doit entrer dans la modale, y rester, et revenir au déclencheur à la fermeture.
La question revient à chaque revue de composant, et elle reçoit généralement une réponse de principe : « oui, il faut pouvoir fermer au clic extérieur ». C'est une bonne intention appliquée trop largement. Selon ce que la modale attend de l'utilisateur, fermer facilement est un confort ou une faute.
Trois cas, trois comportements
Adrian Roselli propose un découpage qui a le mérite de trancher vite. Il tient en une question : que se passe-t-il si l'utilisateur ferme par erreur ?
| Type de dialogue | Clic extérieur et Échap | Exemples |
|---|---|---|
| Décision obligatoire | Ne ferment pas | Confirmation, conditions, connexion |
| Information | Ferment | Message de succès, aide, inscription |
| Motif dérivé | À arbitrer | Tiroir, panneau latéral, visionneuse |
Le dialogue qui exige une décision. Supprimer un compte, accepter des conditions, confirmer un paiement : l'utilisateur doit répondre, et une fermeture accidentelle lui fera croire qu'il a répondu. Ici, ni le clic extérieur ni Échap ne doivent fermer. Un bouton « Annuler » explicite fait le travail, et il a l'avantage d'être atteignable par tout le monde.
Le dialogue informatif. Une confirmation d'envoi, une aide contextuelle, une proposition d'inscription à une lettre d'information : rien ne se perd à la fermeture. Fermer au clic extérieur est alors un confort réel, et Échap doit faire exactement la même chose.
Les motifs dérivés. Tiroir latéral, panneau glissant, visionneuse d'images : ils empruntent au dialogue sans en être. Deux questions permettent de trancher au cas par cas. L'utilisateur perd-il une saisie en fermant ? Et le comportement est-il cohérent avec les autres composants du même site ? L'incohérence interne coûte souvent plus cher que le choix lui-même.
La règle qui vaut dans tous les cas
Le clic extérieur et la touche Échap doivent se comporter identiquement. Ce sont deux formulations du même geste : sortir sans décider.
Une modale qui se ferme au clic extérieur mais résiste à Échap n'a pas fait un choix de conception, elle a oublié le clavier. Et elle pénalise précisément les personnes qui n'utilisent pas de souris. L'inverse existe aussi et pose le même problème en miroir.
Ce que le RGAA exige, indépendamment du choix
Quel que soit l'arbitrage sur la fermeture, trois exigences s'appliquent et se vérifient au clavier seul.
Le focus entre dans la modale à l'ouverture. Sur le premier élément interactif utile, ou sur le conteneur du dialogue. Une modale qui s'ouvre en laissant le focus derrière elle est invisible pour qui ne la voit pas.
Le focus ne sort pas tant qu'elle est ouverte. C'est l'objet du critère 12.9 sur les pièges au clavier, dans son versant inverse : ici, ce n'est pas l'utilisateur qui est piégé dans la modale, c'est l'arrière-plan qui doit être rendu inerte. L'attribut inert sur le conteneur principal fait ce travail proprement, là où aria-hidden seul laisse les éléments atteignables à la tabulation.
Le focus revient au déclencheur à la fermeture. Sans quoi l'utilisateur repart du haut de la page, sans indication de l'endroit où il en était.
<div id="contenu-principal" inert>
<!-- page rendue inerte pendant que la modale est ouverte -->
</div>
<div role="dialog" aria-modal="true" aria-labelledby="titre-modale">
<h2 id="titre-modale">Confirmer la suppression</h2>
<p>Cette action est irréversible.</p>
<button type="button">Annuler</button>
<button type="button">Supprimer</button>
</div>
Sur le choix entre inert et aria-hidden, notre article sur aria-hidden détaille pourquoi le second ne suffit pas seul.
L'erreur qui reste la plus fréquente
Ce n'est aucune des précédentes : c'est la modale sans nom accessible. Un role="dialog" sans aria-labelledby pointant vers son titre produit une annonce du type « boîte de dialogue », sans dire laquelle. L'utilisateur sait qu'une fenêtre s'est ouverte et ignore ce qu'elle lui demande.
Conclusion
Il n'y a pas de réponse universelle à la question de départ, et c'est précisément pour cela qu'elle mérite d'être posée composant par composant plutôt que réglée une fois pour toutes dans le design system. Ce qui, en revanche, ne se discute pas, c'est la symétrie entre clic extérieur et Échap, et le trajet du focus.
Analysez la page qui porte vos modales : l'absence de nom accessible et les éléments focusables masqués ressortent automatiquement. Le trajet du focus, lui, se vérifie en ouvrant la modale et en tabulant.
Source de l'analyse initiale : Should a Dialog Close When Clicked Outside?, Adrian Roselli, août 2026.
Questions fréquentes
Une modale doit-elle se fermer avec la touche Échap ?
Dans la plupart des cas oui, et le motif ARIA de la boîte de dialogue le prévoit. L'exception concerne les dialogues qui exigent une décision : une confirmation de suppression, une acceptation de conditions, une reprise de session. Y fermer à Échap revient à laisser l'utilisateur croire qu'il a répondu alors qu'il a seulement esquivé. Dans ce cas, un bouton explicite d'annulation remplace Échap.
Le clic extérieur et la touche Échap doivent-ils se comporter pareil ?
Oui, et c'est la règle la plus utile à retenir. Ce sont deux façons de dire « je sors sans décider ». Une modale qui se ferme au clic extérieur mais résiste à Échap pénalise exactement les utilisateurs qui n'ont pas de souris, et crée une différence de comportement que rien ne justifie.
Que faut-il vérifier au clavier sur une modale ?
Trois choses. Le focus entre dans la modale à l'ouverture, sur le premier élément utile ou sur le conteneur. Il y reste tant qu'elle est ouverte, sans jamais partir dans la page en arrière-plan, ce qu'exige le critère RGAA 12.9 sur les pièges au clavier. Et il revient à l'élément déclencheur à la fermeture, faute de quoi l'utilisateur se retrouve en haut de page sans savoir où il est.
Guides RGAA associés
Pour aller plus loin sur les sujets abordés dans cet article, consultez nos fiches techniques :
Chaque champ de formulaire doit avoir une étiquette (label) qui lui est liée explicitement.
Chaque image porteuse d'information doit avoir une alternative textuelle pertinente via l'attribut alt. Les images décoratives doivent avoir un attribut alt vide.
L'ordre de tabulation clavier doit être cohérent avec l'ordre de lecture visuel (l'absence de piège au clavier relève du critère 12.9).
Vidéos RGAA sur ce thème
Pour voir ces sujets en action, regardez les épisodes vidéo correspondants :
Articles similaires
Votre site est-il conforme ?
Ne prenez pas de risques avec l'accessibilité. Lancez un audit complet de votre site en quelques minutes et obtenez un rapport détaillé des corrections à apporter.