Popovers
Documentatie en voorbeelden voor het toevoegen van Bootstrap-popovers, zoals die in iOS, aan elk element op uw site.
Overzicht
Wat u moet weten bij het gebruik van de popover-plug-in:
- Popovers vertrouwen op de 3rd party bibliotheek Popper voor positionering. U moet popper.min.js vóór bootstrap.js opnemen of
bootstrap.bundle.min.js
/ gebruikenbootstrap.bundle.js
die Popper bevat om popovers te laten werken! - Popovers vereisen de tooltip-plug- in als afhankelijkheid.
- Als u ons JavaScript vanaf de bron bouwt, is
util.js
. - Popovers zijn opt-in om prestatieredenen, dus u moet ze zelf initialiseren .
- Nullengte
title
encontent
waarden zullen nooit een popover laten zien. - Specificeer
container: 'body'
om weergaveproblemen in complexere componenten te voorkomen (zoals onze invoergroepen, knopgroepen, enz.). - Het activeren van popovers op verborgen elementen werkt niet.
- Popovers voor
.disabled
ofdisabled
elementen moeten worden geactiveerd op een wrapper-element. - Wanneer geactiveerd door ankers die over meerdere lijnen lopen, worden popovers gecentreerd tussen de totale breedte van de ankers. Gebruik
.text-nowrap
op uw<a>
s om dit gedrag te voorkomen. - Popovers moeten worden verborgen voordat de bijbehorende elementen uit het DOM zijn verwijderd.
- Popovers kunnen worden geactiveerd dankzij een element in een schaduw-DOM.
prefers-reduced-motion
mediaquery. Zie het
gedeelte over beperkte beweging van onze toegankelijkheidsdocumentatie .
Blijf lezen om te zien hoe popovers werken met enkele voorbeelden.
Voorbeeld: overal popovers inschakelen
Een manier om alle popovers op een pagina te initialiseren, is door ze op hun data-toggle
attribuut te selecteren:
$(function () {
$('[data-toggle="popover"]').popover()
})
Voorbeeld: de container
optie gebruiken
Als je enkele stijlen op een bovenliggend element hebt die een popover verstoren, moet je een custom specificeren container
zodat de HTML van de popover in plaats daarvan binnen dat element verschijnt.
$(function () {
$('.example-popover').popover({
container: 'body'
})
})
Voorbeeld
<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
Vier richtingen
Er zijn vier opties beschikbaar: boven, rechts, onder en links uitgelijnd.
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="top" data-content="Top popover">
Popover on top
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="right" data-content="Right popover">
Popover on right
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Bottom popover">
Popover on bottom
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="left" data-content="Left popover">
Popover on left
</button>
Sluiten bij volgende klik
Gebruik de focus
trigger om popovers te sluiten bij de volgende klik van de gebruiker op een ander element dan het schakelelement.
Specifieke opmaak vereist voor afwijzen bij volgende klik
Voor correct cross-browser en cross-platform gedrag moet u de <a>
tag gebruiken, niet de <button>
tag, en moet u ook een tabindex
attribuut opnemen.
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
$('.popover-dismiss').popover({
trigger: 'focus'
})
Uitgeschakelde elementen
Elementen met het disabled
attribuut zijn niet interactief, wat betekent dat gebruikers er niet met de muis over kunnen gaan of erop kunnen klikken om een popover (of knopinfo) te activeren. Als tijdelijke oplossing wilt u de popover vanuit een wrapper activeren <div>
of de op het uitgeschakelde element <span>
overschrijven .pointer-events
Voor uitgeschakelde popover-triggers kunt u er ook de voorkeur aan geven data-trigger="hover"
dat de popover wordt weergegeven als onmiddellijke visuele feedback voor uw gebruikers, omdat ze niet verwachten dat ze op een uitgeschakeld element zullen klikken .
<span class="d-inline-block" data-toggle="popover" data-content="Disabled popover">
<button class="btn btn-primary" style="pointer-events: none;" type="button" disabled>Disabled button</button>
</span>
Gebruik
Popovers inschakelen via JavaScript:
$('#example').popover(options)
GPU-versnelling
Popovers lijken soms wazig op Windows 10-apparaten vanwege GPU-versnelling en een aangepaste systeem-DPI. De oplossing hiervoor in v4 is om GPU-versnelling indien nodig uit te schakelen in uw popovers.
Voorgestelde oplossing:
Popper.Defaults.modifiers.computeStyle.gpuAcceleration = !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform))
Popovers laten werken voor gebruikers van toetsenborden en ondersteunende technologie
Om toetsenbordgebruikers in staat te stellen uw popovers te activeren, moet u ze alleen toevoegen aan HTML-elementen die traditioneel toetsenbordgericht en interactief zijn (zoals koppelingen of formulierbesturingselementen). Hoewel willekeurige HTML-elementen (zoals <span>
s) focusseerbaar kunnen worden gemaakt door het tabindex="0"
attribuut toe te voegen, voegt dit mogelijk vervelende en verwarrende tabstops toe aan niet-interactieve elementen voor toetsenbordgebruikers, en de meeste ondersteunende technologieën kondigen momenteel de inhoud van de popover niet aan in deze situatie . Vertrouw er bovendien niet alleen op hover
als de trigger voor uw popovers, omdat dit het onmogelijk maakt om ze te activeren voor toetsenbordgebruikers.
Hoewel u met deze optie uitgebreide, gestructureerde HTML in popovers kunt invoegen, html
raden we u ten zeerste aan om geen overmatige hoeveelheid inhoud toe te voegen. De manier waarop popovers momenteel werken, is dat, zodra ze worden weergegeven, hun inhoud is gekoppeld aan het trigger-element met het aria-describedby
attribuut. Als gevolg hiervan zal de volledige inhoud van de popover worden aangekondigd aan gebruikers van ondersteunende technologie als één lange, ononderbroken stream.
Bovendien, hoewel het mogelijk is om ook interactieve bedieningselementen (zoals formulierelementen of koppelingen) in uw popover op te nemen (door deze elementen toe te voegen aan de whiteList
of toegestane attributen en tags), moet u er rekening mee houden dat de popover momenteel de focusvolgorde van het toetsenbord niet beheert. Wanneer een toetsenbordgebruiker een popover opent, blijft de focus op het activerende element, en aangezien de popover meestal niet onmiddellijk de trigger in de structuur van het document volgt, is er geen garantie dat vooruit gaan/drukkenTABzal een toetsenbordgebruiker naar de popover zelf verplaatsen. Kortom, het simpelweg toevoegen van interactieve bedieningselementen aan een popover maakt deze bedieningselementen waarschijnlijk onbereikbaar/onbruikbaar voor toetsenbordgebruikers en gebruikers van ondersteunende technologieën, of zorgt op zijn minst voor een onlogische algemene focusvolgorde. Overweeg in deze gevallen om in plaats daarvan een modaal dialoogvenster te gebruiken.
Opties
Opties kunnen worden doorgegeven via data-attributen of JavaScript. Voeg voor gegevensattributen de optienaam toe aan data-
, zoals in data-animation=""
.
sanitize
,
sanitizeFn
en
whiteList
niet kunnen worden geleverd met gegevensattributen.
Naam | Type | Standaard | Beschrijving |
---|---|---|---|
animatie | booleaans | WAAR | Pas een CSS-vervagingsovergang toe op de popover |
container | tekenreeks | element | vals | vals | Voegt de popover toe aan een specifiek element. Voorbeeld: |
inhoud | tekenreeks | element | functie | '' | Standaard inhoudswaarde als Als een functie is opgegeven, wordt deze aangeroepen met de |
vertraging | nummer | object | 0 | Vertraging bij het tonen en verbergen van de popover (ms) - is niet van toepassing op het handmatige triggertype Als een nummer wordt opgegeven, wordt vertraging toegepast op zowel verbergen/weergeven Objectstructuur is: |
html | booleaans | vals | HTML invoegen in de popover. Indien onwaar, wordt de methode van jQuery text gebruikt om inhoud in de DOM in te voegen. Gebruik sms als je je zorgen maakt over XSS-aanvallen. |
plaatsing | tekenreeks | functie | 'Rechtsaf' | Hoe de popover te plaatsen - auto | naar boven | onderaan | links | Rechtsaf. Wanneer een functie wordt gebruikt om de plaatsing te bepalen, wordt deze aangeroepen met het popover-DOM-knooppunt als het eerste argument en het activerende element DOM-knooppunt als het tweede. De |
selector | tekenreeks | vals | vals | Als er een selector is, worden popover-objecten gedelegeerd aan de opgegeven doelen. In de praktijk wordt dit gebruikt om dynamische HTML-inhoud popovers toe te laten voegen. Zie dit en een informatief voorbeeld . |
sjabloon | snaar | '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>' |
Basis-HTML die moet worden gebruikt bij het maken van de popover. De popover's De popover's
Het buitenste wrapper-element moet de |
titel | tekenreeks | element | functie | '' | Standaardtitelwaarde als Als een functie is opgegeven, wordt deze aangeroepen met de |
trekker | snaar | 'Klik' | Hoe popover wordt geactiveerd - klik op | zweven | focus | handleiding. U kunt meerdere triggers doorgeven; scheid ze met een spatie. manual kan niet worden gecombineerd met een andere trigger. |
offset | nummer | snaar | 0 | Offset van de popover ten opzichte van zijn doel. Raadpleeg voor meer informatie de offsetdocumenten van Popper . |
fallbackPlaatsing | tekenreeks | reeks | 'omdraaien' | Sta toe om aan te geven welke positie Popper zal gebruiken bij fallback. Raadpleeg voor meer informatie de gedragsdocumenten van Popper |
customClass | tekenreeks | functie | '' | Voeg klassen toe aan de popover wanneer deze wordt weergegeven. Houd er rekening mee dat deze klassen worden toegevoegd naast de klassen die in de sjabloon zijn gespecificeerd. Om meerdere klassen toe te voegen, scheidt u ze met spaties: U kunt ook een functie doorgeven die een enkele tekenreeks moet retourneren met extra klassenamen. |
grens | tekenreeks | element | 'scrollOuder' | Overloopbeperkingsgrens van de popover. Accepteert de waarden van 'viewport' , 'window' , 'scrollParent' of een HTMLElement-referentie (alleen JavaScript). Raadpleeg voor meer informatie Popper's preventOverflow-documenten . |
ontsmetten | booleaans | WAAR | Schakel de desinfectie in of uit. Indien geactiveerd 'template' , 'content' worden 'title' de opties opgeschoond. Zie de sectie over ontsmettingsmiddelen in onze JavaScript-documentatie . |
witte lijst | object | Standaardwaarde | Object dat toegestane attributen en tags bevat |
ontsmettenFn | null | functie | nul | Hier kunt u uw eigen ontsmettingsfunctie leveren. Dit kan handig zijn als u liever een speciale bibliotheek gebruikt om op te schonen. |
popperConfig | null | object | nul | Om de standaard Popper-configuratie van Bootstrap te wijzigen, zie Popper's configuratie |
Gegevensattributen voor individuele popovers
Opties voor individuele popovers kunnen ook worden gespecificeerd door het gebruik van data-attributen, zoals hierboven uitgelegd.
Methoden:
Asynchrone methoden en overgangen
Alle API-methoden zijn asynchroon en starten een transitie . Ze keren terug naar de beller zodra de overgang is gestart maar voordat deze eindigt . Bovendien wordt een methodeaanroep op een overgangscomponent genegeerd .
$().popover(options)
Initialiseert popovers voor een elementverzameling.
.popover('show')
Onthult de popover van een element. Keert terug naar de beller voordat de popover daadwerkelijk is getoond (dwz voordat de shown.bs.popover
gebeurtenis plaatsvindt). Dit wordt beschouwd als een "handmatige" activering van de popover. Popovers waarvan de titel en inhoud beide nul zijn, worden nooit weergegeven.
$('#element').popover('show')
.popover('hide')
Verbergt de popover van een element. Keert terug naar de beller voordat de popover daadwerkelijk is verborgen (dwz voordat de hidden.bs.popover
gebeurtenis plaatsvindt). Dit wordt beschouwd als een "handmatige" activering van de popover.
$('#element').popover('hide')
.popover('toggle')
Schakelt de popover van een element in. Keert terug naar de beller voordat de popover daadwerkelijk is getoond of verborgen (dwz voordat de shown.bs.popover
of hidden.bs.popover
-gebeurtenis plaatsvindt). Dit wordt beschouwd als een "handmatige" activering van de popover.
$('#element').popover('toggle')
.popover('dispose')
Verbergt en vernietigt de popover van een element. Popovers die delegatie gebruiken (die zijn gemaakt met de selector
optie ) kunnen niet afzonderlijk worden vernietigd op onderliggende triggerelementen.
$('#element').popover('dispose')
.popover('enable')
Geeft de popover van een element de mogelijkheid om te worden weergegeven. Popovers zijn standaard ingeschakeld.
$('#element').popover('enable')
.popover('disable')
Verwijdert de mogelijkheid om de popover van een element weer te geven. De popover kan alleen worden weergegeven als deze opnieuw wordt ingeschakeld.
$('#element').popover('disable')
.popover('toggleEnabled')
Schakelt de mogelijkheid in om de popover van een element te tonen of te verbergen.
$('#element').popover('toggleEnabled')
.popover('update')
Werkt de positie van de popover van een element bij.
$('#element').popover('update')
Evenementen
Evenementtype | Beschrijving |
---|---|
show.bs.popover | Deze gebeurtenis wordt onmiddellijk geactiveerd wanneer de show instantiemethode wordt aangeroepen. |
getoond.bs.popover | Deze gebeurtenis wordt geactiveerd wanneer de popover zichtbaar is gemaakt voor de gebruiker (wacht tot de CSS-overgangen zijn voltooid). |
verberg.bs.popover | Deze gebeurtenis wordt onmiddellijk geactiveerd wanneer de hide instantiemethode is aangeroepen. |
verborgen.bs.popover | Deze gebeurtenis wordt geactiveerd wanneer de popover is verborgen voor de gebruiker (wacht tot de CSS-overgangen zijn voltooid). |
ingevoegd.bs.popover | Deze gebeurtenis wordt geactiveerd na de show.bs.popover gebeurtenis wanneer de popover-sjabloon is toegevoegd aan de DOM. |
$('#myPopover').on('hidden.bs.popover', function () {
// do something...
})