La mise à jour va prendre effet ! L'une des fonctionnalités qui me passionnent le plus vient d'arriver sur tous les navigateurs modernes et fait officiellement partie de Baseline 2024. Il s'agit de l'API Popover. Popover fournit de nombreuses primitives et affordances de développement performantes pour créer des interfaces multicouches telles que des info-bulles, des menus, des interfaces utilisateur d'enseignement, etc.
Navigateurs pris en charge
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
Voici quelques-uns des avantages des fenêtres pop-up:
- Promotion dans la couche supérieure. Les pop-overs s'affichent dans la couche supérieure, au-dessus du reste de la page. Vous n'avez donc pas à jouer avec
z-index
. - Fonctionnalité Lumière désactivée Si vous cliquez en dehors de la zone, cette dernière se ferme et le curseur est à nouveau activé.
- Gestion du focus par défaut. Lorsque vous ouvrez le pop-up, l'onglet suivant s'arrête dans le pop-up.
- Combinaisons de touches accessibles : Appuyez sur la touche
esc
ou appuyez deux fois sur l'écran pour fermer le pop-up et replacer le curseur au premier plan. - Liaisons de composants accessibles. Connexion sémantique d'un élément de pop-over à un déclencheur de fenêtre contextuelle.
Créer des pop-overs
La création de fenêtres pop-up est assez simple. Pour utiliser les valeurs par défaut, il vous suffit de disposer d'un button
pour déclencher le pop-up et d'un élément à déclencher.
- Tout d'abord, définissez un attribut
popover
sur l'élément qui sera le pop-up. - Ensuite, ajoutez un
id
unique à l'élément pop-up. - Enfin, pour connecter le bouton au pop-up, définissez l'
popovertarget
du bouton sur la valeur de l'id
de l'élément de pop-over.
Ce processus est illustré dans le code suivant :
<button popovertarget="my-popover">Open Popover</button>
<div id="my-popover" popover>
<p><p>I am a popover with more information. Hit <kbd>esc</kbd> or click away to close me.<p></p>
</div>
Pour exercer un contrôle plus précis sur le pop-up, vous pouvez définir explicitement les types de pop-up. Par exemple, utiliser un attribut popover
simple sans valeur revient à utiliser popover="auto"
. La valeur auto
active le comportement d'abandon léger et ferme automatiquement les autres fenêtres pop-up. Utilisez popover="manual"
pour ajouter un bouton de fermeture. Les pop-ups manuels ne ferment pas les autres fenêtres pop-up et ne permettent pas aux utilisateurs de le fermer en cliquant ailleurs dans l'interface utilisateur. Vous pouvez créer un pop-up manuel à l'aide des éléments suivants:
<button popovertarget="my-popover" class="trigger-btn"> Open Popover </button>
<div id="my-popover" popover=manual>
<p>I am a popover with more information. Hit the close button or toggle to close me.<p>
<button class="close-btn" popovertarget="my-popover" popovertargetaction="hide">
<span aria-hidden="true">❌</span>
<span class="sr-only">Close</span>
</button>
</div>
Boîte de dialogue pop-up ou modale
Vous vous demandez peut-être si vous avez besoin d'un pop-over alors qu'une boîte de dialogue existe et que la réponse est: ce n'est peut-être pas le cas.
Il est important de noter que l'attribut popover ne fournit pas de sémantique en lui-même. Bien que vous puissiez désormais créer des expériences de type boîte de dialogue modale à l'aide d'un pop-up, il existe quelques différences clés entre les deux:
L'élément <dialog>
modal
- Ouvert avec
dialog.showModal()
. - Fermée avec
dialog.close()
. - Rend le reste de la page inerte.
- Non compatible avec le comportement de fermeture en mode clair.
- Vous pouvez styliser l'état ouvert avec l'attribut
[open]
. - Représente de manière sémantique un composant interactif qui bloque l'interaction avec le reste de la page.
Attribut [popover]
- Peut être ouvert avec un demandeur déclaratif (
popovertarget
). - Fermée avec
popovertarget
(pop-over automatique) oupopovertargetaction=hide
(pop-over manuel). - Le reste de la page n'est pas inerte.
- Accepte le comportement d'arrêt clair.
- Vous pouvez styliser l'état ouvert avec la pseudo-classe
:popover-open
. - Pas de sémantique inhérente.
Conclusion et autres documents
popover
apporte de nombreuses fonctionnalités intéressantes à la plate-forme. Pour en savoir plus sur cette API, y compris sur son accessibilité, et pour obtenir de la documentation sur l'ensemble des fonctionnalités, consultez les ressources suivantes: