Zum Hauptinhalt springen Zur Dokumentennavigation springen
in English

Popovers

Dokumentation und Beispiele für das Hinzufügen von Bootstrap-Popovern, wie sie in iOS zu finden sind, zu jedem Element auf Ihrer Website.

Überblick

Wissenswertes zur Verwendung des Popover-Plugins:

  • Popovers verlassen sich zur Positionierung auf die Drittanbieter-Bibliothek Popper . Sie müssen popper.min.js vor bootstrap.js einfügen oder bootstrap.bundle.min.js/ verwenden bootstrap.bundle.js, das Popper enthält, damit Popovers funktionieren!
  • Popover erfordern das Tooltip-Plugin als Abhängigkeit.
  • Popover sind aus Leistungsgründen optional, Sie müssen sie also selbst initialisieren .
  • Länge Null titleund contentWerte zeigen niemals ein Popover.
  • Geben Sie container: 'body'an, um Renderprobleme in komplexeren Komponenten (wie unseren Eingabegruppen, Schaltflächengruppen usw.) zu vermeiden.
  • Das Auslösen von Popovern auf ausgeblendeten Elementen funktioniert nicht.
  • Popover für .disabledoder disabled-Elemente müssen auf einem Wrapper-Element ausgelöst werden.
  • Wenn sie von Ankern ausgelöst werden, die sich über mehrere Zeilen erstrecken, werden Popover zwischen der Gesamtbreite der Anker zentriert. Verwenden Sie .text-nowrapauf Ihren <a>s, um dieses Verhalten zu vermeiden.
  • Popover müssen ausgeblendet werden, bevor die entsprechenden Elemente aus dem DOM entfernt wurden.
  • Popovers können dank eines Elements in einem Shadow-DOM ausgelöst werden.
Standardmäßig verwendet diese Komponente den integrierten Inhaltsbereinigungsdienst, der alle HTML-Elemente entfernt, die nicht ausdrücklich erlaubt sind. Weitere Einzelheiten finden Sie im Abschnitt Desinfektionsmittel in unserer JavaScript-Dokumentation .
Der Animationseffekt dieser Komponente ist abhängig von der prefers-reduced-motionMedienanfrage. Weitere Informationen finden Sie im Abschnitt zur reduzierten Bewegung in unserer Dokumentation zur Barrierefreiheit .

Lesen Sie weiter, um zu sehen, wie Popovers mit einigen Beispielen funktionieren.

Beispiel: Popovers überall aktivieren

Eine Möglichkeit, alle Popover auf einer Seite zu initialisieren, wäre, sie anhand ihres data-bs-toggleAttributs auszuwählen:

var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
  return new bootstrap.Popover(popoverTriggerEl)
})

Beispiel: Verwendung der containerOption

Wenn Sie einige Stile auf einem übergeordneten Element haben, die ein Popover stören, sollten Sie einen benutzerdefinierten Stil angeben container, damit der HTML-Code des Popovers stattdessen in diesem Element angezeigt wird.

var popover = new bootstrap.Popover(document.querySelector('.example-popover'), {
  container: 'body'
})

Beispiel

<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>

Vier Richtungen

Vier Optionen sind verfügbar: oben, rechts, unten und links ausgerichtet. Wegbeschreibungen werden bei Verwendung von Bootstrap in RTL gespiegelt.

<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="top" data-bs-content="Top popover">
  Popover on top
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="right" data-bs-content="Right popover">
  Popover on right
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-content="Bottom popover">
  Popover on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-container="body" data-bs-toggle="popover" data-bs-placement="left" data-bs-content="Left popover">
  Popover on left
</button>

Beim nächsten Klick schließen

Verwenden Sie den focusTrigger, um Popovers beim nächsten Klick des Benutzers auf ein anderes Element als das Umschaltelement zu schließen.

Spezifisches Markup für „Schließen beim nächsten Klick“ erforderlich

Für ein ordnungsgemäßes browser- und plattformübergreifendes Verhalten müssen Sie das <a>Tag verwenden, nicht das <button>Tag, und Sie müssen auch ein tabindexAttribut einschließen.

<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-bs-toggle="popover" data-bs-trigger="focus" title="Dismissible popover" data-bs-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
var popover = new bootstrap.Popover(document.querySelector('.popover-dismiss'), {
  trigger: 'focus'
})

Deaktivierte Elemente

Elemente mit dem disabledAttribut sind nicht interaktiv, was bedeutet, dass Benutzer sie nicht bewegen oder darauf klicken können, um ein Popover (oder einen Tooltip) auszulösen. Als Problemumgehung sollten Sie das Popover von einem Wrapper <div>oder auslösen <span>, idealerweise mit Tastatur-fokussierbar tabindex="0".

Bei deaktivierten Popover-Auslösern möchten Sie möglicherweise auch data-bs-trigger="hover focus", dass das Popover Ihren Benutzern als sofortiges visuelles Feedback angezeigt wird, da sie möglicherweise nicht erwarten, auf ein deaktiviertes Element zu klicken .

<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="Disabled popover">
  <button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>

Sass

Variablen

$popover-font-size:                 $font-size-sm;
$popover-bg:                        $white;
$popover-max-width:                 276px;
$popover-border-width:              $border-width;
$popover-border-color:              rgba($black, .2);
$popover-border-radius:             $border-radius-lg;
$popover-inner-border-radius:       subtract($popover-border-radius, $popover-border-width);
$popover-box-shadow:                $box-shadow;

$popover-header-bg:                 shade-color($popover-bg, 6%);
$popover-header-color:              $headings-color;
$popover-header-padding-y:          .5rem;
$popover-header-padding-x:          $spacer;

$popover-body-color:                $body-color;
$popover-body-padding-y:            $spacer;
$popover-body-padding-x:            $spacer;

$popover-arrow-width:               1rem;
$popover-arrow-height:              .5rem;
$popover-arrow-color:               $popover-bg;

$popover-arrow-outer-color:         fade-in($popover-border-color, .05);

Verwendungszweck

Popover über JavaScript aktivieren:

var exampleEl = document.getElementById('example')
var popover = new bootstrap.Popover(exampleEl, options)

Popovers für Benutzer von Tastaturen und Hilfstechnologien funktionieren lassen

Damit Tastaturbenutzer Ihre Popover aktivieren können, sollten Sie sie nur zu HTML-Elementen hinzufügen, die traditionell über die Tastatur fokussierbar und interaktiv sind (z. B. Links oder Formularsteuerelemente). Obwohl beliebige HTML-Elemente (z. B. <span>s) durch Hinzufügen des tabindex="0"Attributs fokussierbar gemacht werden können, fügt dies potenziell lästige und verwirrende Tabstopps bei nicht interaktiven Elementen für Tastaturbenutzer hinzu, und die meisten Hilfstechnologien kündigen derzeit den Inhalt des Popovers in dieser Situation nicht an . Verlassen Sie sich außerdem nicht ausschließlich auf hoverden Auslöser für Ihre Popovers, da dies es Tastaturbenutzern unmöglich macht, sie auszulösen.

Obwohl Sie mit der Option reichhaltiges, strukturiertes HTML in Popover einfügen können, htmlempfehlen wir Ihnen dringend, das Hinzufügen einer übermäßigen Menge an Inhalten zu vermeiden. Die Art und Weise, wie Popovers derzeit funktionieren, besteht darin, dass ihr Inhalt, sobald er angezeigt wird, mit dem aria-describedbyAttribut an das Auslöserelement gebunden ist. Infolgedessen wird der gesamte Inhalt des Popovers den Benutzern von Hilfstechnologien als ein langer, ununterbrochener Stream angekündigt.

Obwohl es möglich ist, auch interaktive Steuerelemente (z. B. Formularelemente oder Links) in Ihr Popover aufzunehmen (indem Sie diese Elemente zu den allowListzulässigen Attributen und Tags hinzufügen), beachten Sie außerdem, dass das Popover derzeit nicht die Reihenfolge des Tastaturfokus verwaltet. Wenn ein Tastaturbenutzer ein Popover öffnet, bleibt der Fokus auf dem auslösenden Element, und da das Popover normalerweise nicht unmittelbar auf den Auslöser in der Dokumentstruktur folgt, gibt es keine Garantie dafür, dass es sich vorwärts bewegt/drücktTABverschiebt einen Tastaturbenutzer in das Popover selbst. Kurz gesagt, das einfache Hinzufügen interaktiver Steuerelemente zu einem Popover macht diese Steuerelemente wahrscheinlich für Tastaturbenutzer und Benutzer von Hilfstechnologien unerreichbar/unbrauchbar oder sorgt zumindest für eine unlogische allgemeine Fokusreihenfolge. Erwägen Sie in diesen Fällen stattdessen die Verwendung eines modalen Dialogfelds.

Optionen

Optionen können über Datenattribute oder JavaScript übergeben werden. Hängen Sie für Datenattribute den Optionsnamen an data-bs-, wie in data-bs-animation="". Stellen Sie sicher, dass Sie den Falltyp des Optionsnamens von camelCase in kebab-case ändern, wenn Sie die Optionen über Datenattribute übergeben. data-bs-customClass="beautifier"Verwenden Sie beispielsweise anstelle von data-bs-custom-class="beautifier".

sanitizeBeachten Sie, dass die Optionen , sanitizeFn, und aus Sicherheitsgründen allowListnicht mit Datenattributen angegeben werden können.
Name Typ Standard Beschreibung
animation boolesch true Wenden Sie einen CSS-Fade-Übergang auf das Popover an
container Zeichenfolge | Element | FALSCH false

Hängt das Popover an ein bestimmtes Element an. Beispiel: container: 'body'. Diese Option ist besonders nützlich, da sie es Ihnen ermöglicht, das Popover im Fluss des Dokuments in der Nähe des auslösenden Elements zu positionieren – wodurch verhindert wird, dass das Popover während einer Fenstergrößenänderung vom auslösenden Element wegschwebt.

content Zeichenfolge | Element | Funktion ''

Standardinhaltswert, wenn data-bs-contentdas Attribut nicht vorhanden ist.

Wenn eine Funktion angegeben wird, wird sie aufgerufen, wobei ihre thisReferenz auf das Element gesetzt wird, an das das Popover angehängt ist.

delay Zahl | Objekt 0

Verzögerung beim Anzeigen und Ausblenden des Popovers (ms) – gilt nicht für den manuellen Triggertyp

Wenn eine Nummer angegeben wird, wird die Verzögerung sowohl auf das Ausblenden als auch auf das Anzeigen angewendet

Objektstruktur ist:delay: { "show": 500, "hide": 100 }

html boolesch false Fügen Sie HTML in das Popover ein. Wenn falsch, innerTextwird die Eigenschaft verwendet, um Inhalte in das DOM einzufügen. Verwenden Sie Text, wenn Sie sich Sorgen über XSS-Angriffe machen.
placement Zeichenfolge | Funktion 'right'

So positionieren Sie das Popover - auto | Nach oben | unten | links | Rechts.
Wenn autoangegeben wird, wird das Popover dynamisch neu ausgerichtet.

Wenn eine Funktion verwendet wird, um die Platzierung zu bestimmen, wird sie mit dem Popover-DOM-Knoten als erstem Argument und dem auslösenden Element-DOM-Knoten als zweitem Argument aufgerufen. Der thisKontext wird auf die Popover-Instanz gesetzt.

selector Zeichenfolge | FALSCH false Wenn ein Selektor bereitgestellt wird, werden Popover-Objekte an die angegebenen Ziele delegiert. In der Praxis wird dies verwendet, um dynamischen HTML-Inhalten das Hinzufügen von Popovern zu ermöglichen. Siehe dies und ein informatives Beispiel .
template Schnur '<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'

Basis-HTML, das beim Erstellen des Popovers verwendet werden soll.

Die Popovers titlewerden in die .popover-header.

Die Popovers contentwerden in die .popover-body.

.popover-arrowwird zum Pfeil des Popovers.

Das äußerste Wrapper-Element sollte die .popoverKlasse haben.

title Zeichenfolge | Element | Funktion ''

Standardtitelwert, wenn titledas Attribut nicht vorhanden ist.

Wenn eine Funktion angegeben wird, wird sie aufgerufen, wobei ihre thisReferenz auf das Element gesetzt wird, an das das Popover angehängt ist.

trigger Schnur 'click' Wie Popover ausgelöst wird – klicken Sie auf | schweben | Fokus | Handbuch. Sie können mehrere Auslöser passieren; Trennen Sie sie mit einem Leerzeichen. manualnicht mit anderen Triggern kombinierbar.
fallbackPlacements Reihe ['top', 'right', 'bottom', 'left'] Definieren Sie Ersatzplatzierungen, indem Sie eine Liste von Platzierungen in einem Array bereitstellen (in bevorzugter Reihenfolge). Weitere Informationen finden Sie in der Verhaltensdokumentation von Popper
boundary Zeichenfolge | Element 'clippingParents' Überlaufbeschränkungsgrenze des Popovers (gilt nur für Poppers Modifikator "preventOverflow"). Standardmäßig ist es 'clippingParents'und kann eine HTMLElement-Referenz akzeptieren (nur über JavaScript). Weitere Informationen finden Sie in der detectOverflow -Dokumentation von Popper .
customClass Zeichenfolge | Funktion ''

Fügen Sie dem Popover Klassen hinzu, wenn es angezeigt wird. Beachten Sie, dass diese Klassen zusätzlich zu allen in der Vorlage angegebenen Klassen hinzugefügt werden. Um mehrere Klassen hinzuzufügen, trennen Sie sie durch Leerzeichen: 'class-1 class-2'.

Sie können auch eine Funktion übergeben, die einen einzelnen String mit zusätzlichen Klassennamen zurückgeben soll.

sanitize boolesch true Aktivieren oder deaktivieren Sie die Bereinigung. Wenn aktiviert 'template', werden 'content'und 'title'Optionen bereinigt. Weitere Informationen finden Sie im Abschnitt Desinfektionsmittel in unserer JavaScript-Dokumentation .
allowList Objekt Standardwert Objekt, das erlaubte Attribute und Tags enthält
sanitizeFn null | Funktion null Hier können Sie Ihre eigene Desinfektionsfunktion bereitstellen. Dies kann nützlich sein, wenn Sie es vorziehen, eine dedizierte Bibliothek zur Durchführung der Bereinigung zu verwenden.
offset Reihe | Zeichenfolge | Funktion [0, 8]

Versatz des Popovers relativ zu seinem Ziel. Sie können eine Zeichenfolge in Datenattributen mit kommagetrennten Werten wie folgt übergeben:data-bs-offset="10,20"

Wenn eine Funktion verwendet wird, um den Offset zu bestimmen, wird sie mit einem Objekt aufgerufen, das die Popper-Platzierung, die Referenz und die Popper-Rects als erstes Argument enthält. Als zweites Argument wird das auslösende Element DOM node übergeben. Die Funktion muss ein Array mit zwei Zahlen zurückgeben: .[skidding, distance]

Weitere Informationen finden Sie in der Offset -Dokumentation von Popper .

popperConfig null | Objekt | Funktion null

Um die standardmäßige Popper-Konfiguration von Bootstrap zu ändern, siehe Poppers Konfiguration .

Wenn eine Funktion zum Erstellen der Popper-Konfiguration verwendet wird, wird sie mit einem Objekt aufgerufen, das die Standard-Popper-Konfiguration von Bootstrap enthält. Es hilft Ihnen, die Standardeinstellung mit Ihrer eigenen Konfiguration zu verwenden und zusammenzuführen. Die Funktion muss ein Konfigurationsobjekt für Popper zurückgeben.

Datenattribute für einzelne Popover

Optionen für einzelne Popover können alternativ, wie oben erläutert, durch die Verwendung von Datenattributen spezifiziert werden.

Verwenden der Funktion mitpopperConfig

var popover = new bootstrap.Popover(element, {
  popperConfig: function (defaultBsPopperConfig) {
    // var newPopperConfig = {...}
    // use defaultBsPopperConfig if needed...
    // return newPopperConfig
  }
})

Methoden

Asynchrone Methoden und Übergänge

Alle API-Methoden sind asynchron und starten einen Übergang . Sie kehren zum Aufrufer zurück, sobald der Übergang gestartet wird, aber bevor er endet . Außerdem wird ein Methodenaufruf einer Übergangskomponente ignoriert .

Weitere Informationen finden Sie in unserer JavaScript-Dokumentation .

Show

Zeigt das Popover eines Elements an. Kehrt zum Aufrufer zurück, bevor das Popover tatsächlich angezeigt wurde (dh bevor das shown.bs.popoverEreignis eintritt). Dies wird als „manuelles“ Auslösen des Popovers betrachtet. Popover, deren Titel und Inhalt beide keine Länge haben, werden nie angezeigt.

myPopover.show()

ausblenden

Blendet das Popover eines Elements aus. Kehrt zum Aufrufer zurück, bevor das Popover tatsächlich ausgeblendet wurde (dh bevor das hidden.bs.popoverEreignis eintritt). Dies wird als „manuelles“ Auslösen des Popovers betrachtet.

myPopover.hide()

Umschalten

Schaltet das Popover eines Elements um. Kehrt zum Aufrufer zurück, bevor das Popover tatsächlich angezeigt oder ausgeblendet wurde (dh bevor das shown.bs.popoveroder - hidden.bs.popoverEreignis eintritt). Dies wird als „manuelles“ Auslösen des Popovers betrachtet.

myPopover.toggle()

entsorgen

Verbirgt und zerstört das Popover eines Elements (entfernt gespeicherte Daten auf dem DOM-Element). Popover, die Delegierung verwenden (die mit der selectorOption erstellt werden ), können nicht einzeln auf untergeordneten Auslöserelementen zerstört werden.

myPopover.dispose()

ermöglichen

Gibt dem Popover eines Elements die Möglichkeit, angezeigt zu werden. Popover sind standardmäßig aktiviert.

myPopover.enable()

deaktivieren

Entfernt die Möglichkeit, das Popover eines Elements anzuzeigen. Das Popover kann nur angezeigt werden, wenn es wieder aktiviert wird.

myPopover.disable()

toggleEnabled

Schaltet die Fähigkeit um, das Popover eines Elements anzuzeigen oder auszublenden.

myPopover.toggleEnabled()

aktualisieren

Aktualisiert die Position des Popovers eines Elements.

myPopover.update()

bekomme Instanz

Statische Methode, mit der Sie die mit einem DOM-Element verknüpfte Popover-Instanz abrufen können

var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getInstance(exampleTriggerEl) // Returns a Bootstrap popover instance

getOrCreateInstance

Statische Methode, mit der Sie die mit einem DOM-Element verknüpfte Popover-Instanz abrufen oder eine neue erstellen können, falls sie nicht initialisiert wurde

var exampleTriggerEl = document.getElementById('example')
var popover = bootstrap.Popover.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap popover instance

Veranstaltungen

Ereignistyp Beschreibung
show.bs.popover Dieses Ereignis wird sofort ausgelöst, wenn die showInstanzmethode aufgerufen wird.
gezeigt.bs.popover Dieses Ereignis wird ausgelöst, wenn das Popover für den Benutzer sichtbar gemacht wurde (wartet auf den Abschluss der CSS-Übergänge).
hide.bs.popover Dieses Ereignis wird sofort ausgelöst, wenn die hideInstanzmethode aufgerufen wurde.
hidden.bs.popover Dieses Ereignis wird ausgelöst, wenn das Popover vor dem Benutzer ausgeblendet wurde (wartet, bis die CSS-Übergänge abgeschlossen sind).
inserted.bs.popover Dieses Ereignis wird nach dem show.bs.popoverEreignis ausgelöst, wenn die Popover-Vorlage zum DOM hinzugefügt wurde.
var myPopoverTrigger = document.getElementById('myPopover')
myPopoverTrigger.addEventListener('hidden.bs.popover', function () {
  // do something...
})