Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Globales HTML-Attribut popover

Baseline
Weitgehend verfügbar
*

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2024 browserübergreifend verfügbar.

* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.

Das globale Attribut popover kennzeichnet ein Element als Popover-Element.

Wert

Das Attribut popover kann einen der folgenden Werte annehmen:

"auto"

auto-Popover können durch Klicken außerhalb des Popovers oder durch Drücken der Taste Esc geschlossen werden. Wird ein auto-Popover angezeigt, werden in der Regel andere bereits angezeigte auto-Popover geschlossen, sofern sie nicht verschachtelt sind.

Hinweis: Ein leerer Wert für popover — popover oder popover="" — ist gleichbedeutend mit popover="auto".

"hint"

hint-Popover schließen beim Anzeigen keine auto-Popover. Sie schließen jedoch andere Hint-Popover, die im Hint-Stack keine ihrer Vorfahren sind. Sie können durch Klicken außerhalb geschlossen werden und reagieren auf Schließanforderungen.

"manual"

manual-Popover können nicht durch Klicken außerhalb geschlossen werden und schließen sich nicht automatisch. Sie müssen ausdrücklich über deklarative Schaltflächen zum Anzeigen, Ausblenden oder Umschalten oder über JavaScript angezeigt und geschlossen werden. Mehrere unabhängige manual-Popover können gleichzeitig angezeigt werden.

Beschreibung

Popover-Elemente sind durch display: none ausgeblendet, bis sie über ein auslösendes oder steuerndes Element (also einen <button> oder ein <input type="button"> mit dem Attribut popovertarget) oder durch einen Aufruf von HTMLElement.showPopover() geöffnet werden.

Geöffnete Popover-Elemente erscheinen über allen anderen Elementen in der obersten Ebene. Die Gestaltung über position oder overflow von übergeordneten Elementen wirkt sich nicht auf sie aus.

Popover mit dem Zustand auto können über zugehörige Steuerelemente (gekennzeichnet durch das Attribut popovertarget) angezeigt und ausgeblendet werden. Sie lassen sich außerdem durch Klicken außerhalb des Popover-Bereichs, durch Öffnen eines anderen Popovers oder über browserspezifische Mechanismen wie die Taste Esc schließen.

Im Allgemeinen kann jeweils nur ein auto-Popover auf dem Bildschirm angezeigt werden: Wird ein zweites Popover angezeigt, während bereits eines geöffnet ist, wird das erste ausgeblendet. Eine Ausnahme bilden verschachtelte Auto-Popover. Weitere Informationen finden Sie unter Verschachtelte Popover.

Sie können auch mit JavaScript gesteuert werden. Beispielsweise lässt sich mit der Methode HTMLElement.togglePopover() zwischen dem angezeigten und dem ausgeblendeten Zustand eines Popovers wechseln.

Im Gegensatz dazu müssen manual-Popover manuell angezeigt und ausgeblendet werden. Beim Anzeigen schließen sie andere Popover nicht automatisch und können nicht durch Klicken außerhalb geschlossen werden. Dadurch lassen sich mehrere Popover gleichzeitig anzeigen.

hint-Popover schließen beim Anzeigen keine auto-Popover. Sie schließen jedoch andere Hint-Popover, die im Hint-Stack keine ihrer Vorfahren sind. Sie können durch Klicken außerhalb geschlossen werden und reagieren auf Schließanforderungen.

Üblicherweise werden hint-Popover als Reaktion auf JavaScript-Ereignisse angezeigt und ausgeblendet, die nicht durch Klicken ausgelöst werden, etwa mouseover/mouseout und focus/blur. Wird eine Schaltfläche angeklickt, um ein hint-Popover zu öffnen, wird ein geöffnetes auto-Popover dabei geschlossen.

Ausführliche Informationen zur Verwendung finden Sie auf der Übersichtsseite zur Popover API.

Beispiele

Ein Element zum Popover machen

Der folgende Code stellt eine Schaltfläche dar, die beim Aktivieren ein Popover-Element öffnet. Dieses Verhalten lässt sich allein mit HTML umsetzen.

html
<button popovertarget="my-popover">Open Popover</button>

<div popover id="my-popover">Greetings, one and all!</div>

Popover verschachteln

In diesem Beispiel öffnet eine Schaltfläche ein Popover, das weitere verschachtelte Popover enthält. Die verschachtelten Popover können geöffnet werden, ohne das ursprüngliche Menü-Popover zu schließen.

HTML

Im ersten Teil des HTML erstellen wir einen <button>, der das Haupt-Popover öffnet: ein Menü mit mehreren Optionen.

html
<header>
  <button popovertarget="menu">Open Menu</button>
</header>
<main>
  <!--  Page content goes here  -->
</main>

Im zweiten Teil des HTML erstellen wir das Menü-Popover, das durch die Schaltfläche aus dem vorherigen Codeblock geöffnet wird. Dieses Menü-Popover enthält eine ungeordnete Liste von Menüpunkten. Jeder Menüpunkt hat eine Info-Schaltfläche, die ein verschachteltes Popover öffnet. Das Menü-Popover verwendet popover="auto" und wird daher nicht geschlossen, wenn die verschachtelten Popover geöffnet werden.

html
<!-- menu popover -->
<div id="menu" popover="auto">
  <ul>
    <li>
      <a href="#">New thing</a><button popovertarget="new-info">ⓘ</button>
    </li>
    <li>
      <a href="#">Open thing</a><button popovertarget="open-info">ⓘ</button>
    </li>
    <li>
      <a href="#">Save thing</a><button popovertarget="save-info">ⓘ</button>
    </li>
    <li>
      <a href="#">Close thing</a><button popovertarget="close-info">ⓘ</button>
    </li>
  </ul>
</div>

Im letzten Teil des HTML erstellen wir die Info-Popover für die einzelnen Menüpunkte. Jedes Popover enthält popover="hint". Daher schließt es das ursprüngliche Menü-Popover nicht, wohl aber andere geöffnete Info-Popover.

html
<!-- info popovers -->
<div id="new-info" class="info-popover" popover="hint">
  This is some information about <strong>creating a new</strong> thing.
</div>
<div id="open-info" class="info-popover" popover="hint">
  This is some information about <strong>opening an existing</strong> thing.
</div>
<div id="save-info" class="info-popover" popover="hint">
  This is some information about <strong>saving the current</strong> thing.
</div>
<div id="close-info" class="info-popover" popover="hint">
  This is some information about <strong>closing the current</strong> thing.
</div>

CSS

Wir haben Ankerpositionierung verwendet, um das Menü-Popover unterhalb des <button> zu platzieren, und Grid, um die Menüpunkte und Info-Schaltflächen anzuordnen.

css
#menu {
  margin: 0;
  margin-top: 0.4rem;
  inset: auto;
  position-area: bottom;
}
#menu ul {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.4rem;
  padding: 0.4rem;
}
#menu li {
  grid-column: span 2;
  display: grid;
  grid: inherit;
  grid-template-columns: subgrid;
  gap: 1.4rem;
}
li [popovertarget] {
  cursor: pointer;
  font-size: 1.2rem;
}
li button {
  border: none;
  padding: 0;
  background-color: inherit;
}

Hier haben wir die Ankerpositionierung verwendet, damit die Info-Popover rechts neben ihren jeweiligen Info-Schaltflächen erscheinen.

css
div.info-popover {
  margin: 2rem;
  inset: auto;
  max-width: 300px;
  position-area: right;
}

Ergebnis

Klicken Sie auf die Schaltfläche Open Menu und anschließend auf die Info-Symbole (ⓘ) neben den Menüoptionen, um die Info-Popover zu öffnen.

Hinweis: Auf unserer Übersichtsseite mit Beispielen zur Popover API finden Sie alle Popover-Beispiele von MDN.

Spezifikationen

Spezifikation
HTML
# the-popover-attribute

Browser-Kompatibilität

Siehe auch