API Popover
L'API Popover offre aux développeur·euse·s un mécanisme standard, flexible et cohérent pour afficher des contenus sous forme de fenêtre contextuelle (popover en anglais) par-dessus les autres contenus d'une page. L'affichage des contenus en fenêtre contextuelle peut être contrôlé de manière déclarative en utilisant des attributs HTML, ou via JavaScript.
Concepts et utilisation
Un schéma très courant sur le Web consiste à afficher des contenus par-dessus d'autres, attirant l'attention de la personne sur des informations importantes ou des actions à réaliser. Ces contenus peuvent prendre plusieurs noms : superpositions, popups, fenêtre contextuelle, boîtes de dialogue, etc. Nous les appellerons fenêtres contextuelles dans cette documentation. En règle générale, ils peuvent être :
- modales, ce qui signifie que, lorsqu'une fenêtre contextuelle est affichée, le reste de la page est rendu non interactif jusqu'à ce qu'on interagisse avec la fenêtre contextuelle d'une manière ou d'une autre (par exemple pour effectuer un choix important).
- non modales, ce qui signifie que le reste de la page reste interactif pendant que la fenêtre contextuelle est affichée.
Les fenêtres contextuelles créées à l'aide de l'API Popover sont toujours non-modales. Si vous souhaitez créer une fenêtre contextuelle modale, l'élément <dialog> est la bonne solution. Cependant, gardez à l'esprit que les éléments <dialog> ne sont pas placés dans la couche supérieure par défaut, contrairement aux fenêtres contextuelles. Il y a un recoupement important entre les deux : il est tout à fait possible de créer une fenêtre contextuelle persistante, et de la contrôler en utilisant du HTML déclaratif. Vous pouvez même transformer un élément <dialog> en fenêtre contextuelle si vous souhaitez combiner le contrôle des fenêtres contextuelles et le placement en surimpression avec la sémantique des boîtes de dialogue.
Les cas d'utilisation typiques de l'API Popover incluent les éléments d'interfaces utilisateur interactifs comme les menus d'action, les notifications personnalisées de type toast, les suggestions d'éléments de formulaire, les sélecteurs de contenu ou les interfaces d'apprentissage.
Vous pouvez créer des popovers de deux manières différentes :
-
De manière déclarative, via un ensemble de nouveaux attributs HTML. Une fenêtre contextuelle simple avec un bouton d'activation peut être créée en utilisant le code suivant :
html<button popovertarget="mypopover">Basculer le popover</button> <div id="mypopover" popover>Contenu du popover</div> -
Via une API JavaScript. Par exemple, la méthode
HTMLElement.togglePopover()peut être utilisée pour basculer une fenêtre contextuelle entre les états affiché et masqué.
Il existe également de nouveaux évènements pour réagir à l'activation d'une fenêtre contextuelle, ainsi que des fonctionnalités CSS pour faciliter la mise en forme des fenêtres contextuelles. Toutes les fonctionnalités associées sont répertoriées ci-après.
Voir Utiliser l'API Popover pour un guide détaillé sur l'utilisation de cette API.
Attributs HTML
interestforExpérimental-
Définit un élément HTML
<a>,<button>ou<area>, ou un élément SVG<a>(voir élément<a>), comme invocateur d'intérêt. Sa valeur est l'idde l'élément cible, qui sera affecté d'une manière ou d'une autre (généralement affiché ou masqué) lorsque l'intérêt est montré ou perdu sur l'élément invocateur. popover-
Un attribut universel qui transforme un élément en une fenêtre contextuelle (popover en anglais) et qui prend un état de fenêtre contextuelle (
"auto","hint"ou"manual") comme valeur. popovertarget-
Transforme un élément
<button>ou<input>en bouton de contrôle de fenêtre contextuelle. La valeur de cet attribut correspond à l'identifiant de la fenêtre contextuelle à contrôler. popovertargetaction-
Spécifie l'action à effectuer (
"hide","show"ou"toggle") sur la fenêtre contextuelle contrôlée par un élément de contrôle<button>ou<input>.
Fonctionnalités CSS
::backdrop-
Le pseudo-élément
::backdropest un élément plein écran placé directement derrière les fenêtres contextuelles, permettant d'ajouter des effets au contenu de la page derrière les fenêtres contextuelles si nécessaire (par exemple en le floutant). interest-delay,interest-delay-startetinterest-delay-endExpérimental-
La propriété raccourcie
interest-delayet ses formes longues associéesinterest-delay-startetinterest-delay-endpermettent d'ajouter un délai entre le moment où la personne montre ou perd son intérêt et le moment où le navigateur agit sur ce changement. :interest-sourceet:interest-target-
Ces sélecteurs servent à appliquer des styles respectivement à l'invocateur d'intérêt et à l'élément cible qui lui est associé, uniquement lorsque l'intérêt est indiqué.
:popover-open-
La pseudo-classe
:popover-opencorrespond à une fenêtre contextuelle uniquement lorsqu'elle est affichée. Elle peut être utilisée pour styliser les fenêtres contextuelles lorsqu'elles sont affichées.
Interfaces
InterestEventExpérimental-
L'objet événement pour les événements
interestetloseinterest. Il inclut une propriétésourcecontenant une référence vers l'élément invocateur d'intérêt associé. ToggleEvent-
Représente un évènement de notification lorsqu'une fenêtre contextuelle bascule entre les états affiché et masqué. Elle est implémentée par les évènements
beforetoggleettoggle, qui se déclenchent sur les fenêtres contextuelles lorsque leur état change.
Extensions aux autres interfaces
>Propriétés d'instance
interestForElementExpérimental-
Obtient ou définit une référence vers l'élément ciblé par un invocateur d'intérêt. Si un invocateur d'intérêt HTML ou SVG référence un élément cible via son attribut
interestfor, cet élément sera référencé dans la propriétéinterestForElementde l'objet DOM équivalent. Disponible sur les interfacesHTMLButtonElement,HTMLAnchorElement,HTMLAreaElementetSVGAElement. HTMLElement.popover-
Permet de connaître ou de modifier l'état de la fenêtre contextuelle (popover en anglais) via JavaScript (
"auto"ou"manual"). Elle peut être utilisée pour détecter la prise en charge des fonctionnalités de fenêtre contextuelle. Cette propriété reflète l'attribut HTMLpopover. -
Permet de connaître ou de modifier la fenêtre contextuelle contrôlée par le bouton. C'est l'équivalent JavaScript de l'attribut HTML
popovertarget. -
Permet de connaître ou de modifier l'action à effectuer (
"hide","show"ou"toggle") sur la fenêtre contextuelle contrôlée par le bouton. Cette propriété reflète la valeur de l'attribut HTMLpopovertargetaction.
Méthodes d'instance
HTMLElement.hidePopover()-
Masque la fenêtre contextuelle (popover en anglais) en le supprimant de la couche supérieure et en le masquant avec
display: none. HTMLElement.showPopover()-
Affiche la fenêtre contextuelle en la plaçant dans la couche supérieure.
HTMLElement.togglePopover()-
Change l'état de la fenêtre contextuelle entre les états affiché et masqué.
Évènements
- Évènement
beforetoggle -
Déclenché juste avant que l'état d'une fenêtre contextuelle (popover en anglais) ne change entre affiché et masqué, ou vice versa.
- Évènement
toggle -
Déclenché juste après que l'état d'une fenêtre contextuelle a changé entre affiché et masqué, ou inversement.
interestExpérimental-
Déclenché sur l'élément cible d'un invocateur d'intérêt lorsque l'intérêt est montré, permettant d'exécuter du code en réponse.
loseinterestExpérimental-
Déclenché sur l'élément cible d'un invocateur d'intérêt lorsque l'intérêt est perdu, permettant d'exécuter du code en réponse.
Exemples
- Voir notre collection de Exemples de l'API Popover (angl.).
- Voir notre collection d'exemples d'invocateurs d'intérêt (angl.).
Spécifications
| Specification |
|---|
| HTML> # dom-popover> |
| HTML> # event-beforetoggle> |
| HTML> # event-toggle> |
Compatibilité des navigateurs
>api.HTMLElement.popover
api.HTMLElement.beforetoggle_event.popover_elements
api.HTMLElement.toggle_event.popover_elements
Voir aussi
- L'attribut global HTML
popover - L'attribut HTML
popovertarget - L'attribut HTML
popovertargetaction - Le pseudo-élément CSS
::backdrop - La pseudo-classe CSS
:popover-open