Popover API erreicht die Referenzversion

Es ist so weit! Eine der Funktionen, die mir am meisten gefällt, ist jetzt in allen modernen Browsern verfügbar und gehört offiziell zu Baseline 2024. Diese Funktion ist die Popover API. Popover bietet so viele großartige Primitive und Funktionen für Entwickler zum Erstellen von mehrschichtigen Oberflächen wie Kurzinfos, Menüs, Benutzeroberfläche für den Unterricht und mehr.

Unterstützte Browser

  • Chrome: 114. <ph type="x-smartling-placeholder">
  • Edge: 114. <ph type="x-smartling-placeholder">
  • Firefox: 125 <ph type="x-smartling-placeholder">
  • Safari: 17. <ph type="x-smartling-placeholder">

Quelle

Einige kurze Highlights der Pop-over-Funktionen:

  • Wandern Sie in die oberste Ebene. Popover werden im oberen Layer über dem Rest der Seite angezeigt, sodass Sie nicht mit z-index herumspielen müssen.
  • Lichtabschaltung: Wenn Sie auf eine Stelle außerhalb des Popover-Bereichs klicken, wird es geschlossen und wieder in den Fokus rückt.
  • Standardmäßige Fokusverwaltung: Durch das Öffnen des Pop-overs wird der nächste Tab innerhalb des Pop-overs gestoppt.
  • Barrierefreie Tastaturbindungen Wenn Sie die esc-Taste drücken oder zweimal umschalten, wird das Pop-over geschlossen und der Fokus kehrt zurück.
  • Barrierefreie Komponentenbindungen: Popover-Element semantisch mit einem Popover-Trigger verbinden

Pop-over erstellen

Das Erstellen von Popovers ist ganz einfach. Zur Verwendung von Standardwerten benötigen Sie lediglich ein button, um das Pop-over auszulösen, und ein Element, das ausgelöst werden soll.

  • Legen Sie zuerst ein popover-Attribut für das Element fest, das das Popover sein soll.
  • Fügen Sie dann eine eindeutige id für das Popover-Element hinzu.
  • Um die Schaltfläche schließlich mit dem Popover zu verbinden, setzen Sie den popovertarget der Schaltfläche auf den Wert des id des Popover-Elements.

Dies wird im folgenden Code gezeigt:

<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>
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
Einfaches Beispiel für die Verwendung des Popover-Attributs

Sie können verschiedene Arten von Popovers festlegen, um genauere Kontrolle über das Popover zu haben. Die Verwendung eines einfachen popover-Attributs ohne Wert entspricht beispielsweise popover="auto". Mit dem Wert auto wird das Licht beim Schließen aktiviert und andere Pop-over werden automatisch geschlossen. Verwenden Sie popover="manual" und Sie müssen eine Schließen-Schaltfläche hinzufügen. Manuelle Pop-over schließen keine anderen Pop-over und ermöglichen es Nutzern nicht, das Pop-over zu schließen, indem sie in der Benutzeroberfläche wegklicken. So erstellen Sie ein manuelles Pop-over:

<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>
<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
Beispiel für ein manuelles Pop-over

Pop-over und modales Dialogfeld im Vergleich

Sie fragen sich vielleicht, ob Sie ein Pop-over benötigen, wenn ein Dialogfeld vorhanden ist. Die Antwort lautet: Möglicherweise nicht.

Es ist wichtig zu beachten, dass das Popover-Attribut keine eigene Semantik bietet. Mit Popover können Sie jetzt modale dialogorientierte Anzeigen erstellen. Es gibt jedoch einige wichtige Unterschiede:

Das modale <dialog>-Element

  • Mit dialog.showModal() geöffnet.
  • Bei dialog.close() geschlossen.
  • Macht den Rest der Seite inaktiv.
  • Unterstützt kein Verhalten beim Ausschalten des Lichts.
  • Mit dem Attribut [open] können Sie den Status „Geöffnet“ gestalten.
  • Semantisch stellt eine interaktive Komponente dar, die die Interaktion mit dem Rest der Seite blockiert.

Das Attribut [popover]

  • Kann mit einem deklarativen Aufrufer (popovertarget) geöffnet werden.
  • Mit popovertarget (automatisches Pop-over) oder popovertargetaction=hide (manuelles Pop-over) geschlossen.
  • Macht den Rest der Seite nicht inaktiv.
  • Unterstützt das Licht beim Abschalten.
  • Sie können den offenen Zustand mit der Pseudoklasse :popover-open gestalten.
  • Keine inhärente Semantik.

Fazit und weitere Lesematerialien

popover bietet viele spannende Funktionen auf der Plattform. Weitere Informationen zu dieser API, einschließlich mehr über die Barrierefreiheit der Funktion und Dokumentation zu den Funktionen, finden Sie in den folgenden empfohlenen Lesematerialien: