Popover
Documentazione ed esempi per aggiungere popover Bootstrap, come quelli che si trovano in iOS, a qualsiasi elemento del tuo sito.
Panoramica
Cose da sapere quando si utilizza il plug-in popover:
- I popover si basano sulla libreria di terze parti Popper per il posizionamento. Devi includere popper.min.js prima di bootstrap.js o usare
bootstrap.bundle.min.js
/bootstrap.bundle.js
che contiene Popper affinché i popover funzionino! - I popover richiedono il plug-in del suggerimento come dipendenza.
- Se stai creando il nostro JavaScript dal sorgente, richiede
util.js
. - I popover sono attivabili per motivi di prestazioni, quindi devi inizializzarli tu stesso .
- Lunghezza zero
title
econtent
valori non mostreranno mai un popover. - Specificare
container: 'body'
per evitare problemi di rendering in componenti più complessi (come i nostri gruppi di input, gruppi di pulsanti, ecc.). - L'attivazione dei popover sugli elementi nascosti non funzionerà.
- I popover per gli elementi
.disabled
odisabled
devono essere attivati su un elemento wrapper. - Quando vengono attivati da ancoraggi che si avvolgono su più linee, i popover verranno centrati tra la larghezza complessiva degli ancoraggi. Usa
.text-nowrap
sui tuoi<a>
messaggi di posta elettronica per evitare questo comportamento. - I popover devono essere nascosti prima che i loro elementi corrispondenti siano stati rimossi dal DOM.
- I popover possono essere attivati grazie a un elemento all'interno di un DOM ombra.
prefers-reduced-motion
media query. Vedi la
sezione movimento ridotto della nostra documentazione sull'accessibilità .
Continua a leggere per vedere come funzionano i popover con alcuni esempi.
Esempio: abilita i popover ovunque
Un modo per inizializzare tutti i popover su una pagina sarebbe selezionarli in base al loro data-toggle
attributo:
$(function () {
$('[data-toggle="popover"]').popover()
})
Esempio: utilizzo container
dell'opzione
Quando hai degli stili su un elemento padre che interferiscono con un popover, ti consigliamo di specificare un'impostazione personalizzata container
in modo che l'HTML del popover appaia invece all'interno di quell'elemento.
$(function () {
$('.example-popover').popover({
container: 'body'
})
})
Esempio
<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>
Quattro direzioni
Sono disponibili quattro opzioni: allineato in alto, a destra, in basso e a sinistra.
<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>
Ignora al prossimo clic
Utilizzare il focus
trigger per ignorare i popover al successivo clic dell'utente su un elemento diverso rispetto all'elemento di attivazione/disattivazione.
È richiesto un markup specifico per l'eliminazione al clic successivo
Per un corretto comportamento cross-browser e multipiattaforma, devi utilizzare il <a>
tag, non il <button>
tag, e devi anche includere un tabindex
attributo.
<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'
})
Elementi disabilitati
Gli elementi con l' disabled
attributo non sono interattivi, il che significa che gli utenti non possono passare il mouse o fare clic su di essi per attivare un popover (o una descrizione comando). Come soluzione alternativa, ti consigliamo di attivare il popover da un wrapper <div>
o <span>
e sovrascrivere l' pointer-events
elemento disabilitato.
Per i trigger di popover disabilitati, potresti anche preferire data-trigger="hover"
che il popover appaia come feedback visivo immediato ai tuoi utenti poiché potrebbero non aspettarsi di fare clic su un elemento disabilitato.
<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>
Utilizzo
Abilita i popover tramite JavaScript:
$('#example').popover(options)
Accelerazione GPU
I popover a volte appaiono sfocati sui dispositivi Windows 10 a causa dell'accelerazione della GPU e di un DPI di sistema modificato. La soluzione alternativa per questo in v4 è disabilitare l'accelerazione GPU secondo necessità sui popover.
Correzione suggerita:
Popper.Defaults.modifiers.computeStyle.gpuAcceleration = !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform))
Fare in modo che i popover funzionino per gli utenti di tastiere e tecnologie assistive
Per consentire agli utenti della tastiera di attivare i tuoi popover, dovresti aggiungerli solo agli elementi HTML che sono tradizionalmente focalizzabili sulla tastiera e interattivi (come collegamenti o controlli dei moduli). Sebbene elementi HTML arbitrari (come <span>
s) possano essere resi attivabili aggiungendo l' tabindex="0"
attributo, ciò aggiungerà tabulazioni potenzialmente fastidiose e confuse su elementi non interattivi per gli utenti della tastiera e la maggior parte delle tecnologie assistive attualmente non annuncia il contenuto del popover in questa situazione . Inoltre, non fare affidamento solo su hover
come trigger per i tuoi popover, poiché ciò renderà impossibile attivarli per gli utenti della tastiera.
Sebbene tu possa inserire HTML ricco e strutturato nei popover con l' html
opzione, ti consigliamo vivamente di evitare di aggiungere una quantità eccessiva di contenuto. Il modo in cui funzionano attualmente i popover è che, una volta visualizzati, il loro contenuto è legato all'elemento trigger con l' aria-describedby
attributo. Di conseguenza, l'intero contenuto del popover verrà annunciato agli utenti di tecnologie assistive come un flusso lungo e ininterrotto.
Inoltre, sebbene sia possibile includere anche controlli interattivi (come elementi del modulo o collegamenti) nel popover (aggiungendo questi elementi agli whiteList
attributi e ai tag consentiti o consentiti), tieni presente che attualmente il popover non gestisce l'ordine del focus della tastiera. Quando un utente della tastiera apre un popover, l'attenzione rimane sull'elemento di attivazione e poiché il popover di solito non segue immediatamente l'attivazione nella struttura del documento, non vi è alcuna garanzia che si vada avanti/premendoTABsposterà un utente della tastiera nel popover stesso. In breve, è probabile che la semplice aggiunta di controlli interattivi a un popover renda questi controlli irraggiungibili/inutilizzabili per gli utenti della tastiera e per gli utenti di tecnologie assistive, o almeno crei un ordine generale di messa a fuoco illogico. In questi casi, considera invece l'utilizzo di una finestra di dialogo modale.
Opzioni
Le opzioni possono essere passate tramite attributi di dati o JavaScript. Per gli attributi dei dati, aggiungere il nome dell'opzione a data-
, come in data-animation=""
.
sanitize
,
sanitizeFn
e
whiteList
non possono essere fornite utilizzando gli attributi dei dati.
Nome | Tipo | Predefinito | Descrizione |
---|---|---|---|
animazione | booleano | VERO | Applica una transizione di dissolvenza CSS al popover |
contenitore | stringa | elemento | falso | falso | Aggiunge il popover a un elemento specifico. Esempio: |
contenuto | stringa | elemento | funzione | '' | Valore di contenuto predefinito se Se viene fornita una funzione, verrà chiamata con il suo |
ritardo | numero | oggetto | 0 | Ritardo che mostra e nasconde il popover (ms) - non si applica al tipo di trigger manuale Se viene fornito un numero, il ritardo viene applicato a entrambi nascondi/mostra La struttura dell'oggetto è: |
html | booleano | falso | Inserisci HTML nel popover. Se false, il text metodo di jQuery verrà utilizzato per inserire contenuto nel DOM. Usa il testo se sei preoccupato per gli attacchi XSS. |
posizionamento | stringa | funzione | 'Giusto' | Come posizionare il popover - auto | in alto | in basso | sinistra | Giusto. Quando una funzione viene utilizzata per determinare il posizionamento, viene chiamata con il nodo DOM popover come primo argomento e il nodo DOM dell'elemento di attivazione come secondo. Il |
selettore | stringa | falso | falso | Se viene fornito un selettore, gli oggetti popover verranno delegati alle destinazioni specificate. In pratica, questo viene utilizzato per consentire al contenuto HTML dinamico di aggiungere popover. Vedi questo e un esempio informativo . |
modello | corda | '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>' |
HTML di base da utilizzare durante la creazione del popover. I popover I popover
L'elemento wrapper più esterno dovrebbe avere la |
titolo | stringa | elemento | funzione | '' | Valore del titolo predefinito se Se viene fornita una funzione, verrà chiamata con il suo |
grilletto | corda | 'clic' | Come viene attivato il popover - fare clic su | passa il mouse | messa a fuoco | Manuale. Puoi passare più trigger; separali con uno spazio. manual non può essere combinato con nessun altro trigger. |
compensare | numero | corda | 0 | Offset del popover rispetto al suo target. Per ulteriori informazioni, fare riferimento ai documenti di offset di Popper . |
posizionamento di fallback | stringa | Vettore | 'Flip' | Consenti di specificare quale posizione utilizzerà Popper in fallback. Per ulteriori informazioni, fare riferimento ai documenti sul comportamento di Popper |
customClass | stringa | funzione | '' | Aggiungi classi al popover quando viene mostrato. Tieni presente che queste classi verranno aggiunte in aggiunta a tutte le classi specificate nel modello. Per aggiungere più classi, separale con spazi: Puoi anche passare una funzione che dovrebbe restituire una singola stringa contenente nomi di classi aggiuntivi. |
confine | stringa | elemento | 'scorri Genitore' | Limite del vincolo di overflow del popover. Accetta i valori di 'viewport' , 'window' , 'scrollParent' o un riferimento HTMLElement (solo JavaScript). Per ulteriori informazioni, fare riferimento ai documenti preventOverflow di Popper . |
sanificare | booleano | VERO | Abilita o disabilita la sanificazione. Se attivato 'template' , 'content' e 'title' le opzioni verranno sanificate. Vedi la sezione disinfettante nella nostra documentazione JavaScript . |
lista bianca | oggetto | Valore di default | Oggetto che contiene attributi e tag consentiti |
igienizzaFn | nullo | funzione | nullo | Qui puoi fornire la tua funzione di sanificazione. Questo può essere utile se si preferisce utilizzare una libreria dedicata per eseguire la sanificazione. |
popperConfig | nullo | oggetto | nullo | Per modificare la configurazione di Popper predefinita di Bootstrap, vedere la configurazione di Popper |
Attributi dei dati per i singoli popover
Le opzioni per i singoli popover possono essere specificate in alternativa tramite l'uso di attributi di dati, come spiegato sopra.
Metodi
Metodi e transizioni asincrone
Tutti i metodi API sono asincroni e avviano una transizione . Ritornano al chiamante non appena la transizione è iniziata ma prima che termini . Inoltre, una chiamata al metodo su un componente in transizione verrà ignorata .
Consulta la nostra documentazione JavaScript per ulteriori informazioni .
$().popover(options)
Inizializza i popover per una raccolta di elementi.
.popover('show')
Rivela il popover di un elemento. Ritorna al chiamante prima che il popover sia stato effettivamente mostrato (cioè prima shown.bs.popover
che si verifichi l'evento). Questo è considerato un'attivazione "manuale" del popover. I popover il cui titolo e contenuto sono entrambi di lunghezza zero non vengono mai visualizzati.
$('#element').popover('show')
.popover('hide')
Nasconde il popover di un elemento. Ritorna al chiamante prima che il popover sia stato effettivamente nascosto (cioè prima hidden.bs.popover
che si verifichi l'evento). Questo è considerato un'attivazione "manuale" del popover.
$('#element').popover('hide')
.popover('toggle')
Attiva/disattiva il popover di un elemento. Ritorna al chiamante prima che il popover sia stato effettivamente mostrato o nascosto (cioè prima che si verifichi l' evento shown.bs.popover
o hidden.bs.popover
). Questo è considerato un'attivazione "manuale" del popover.
$('#element').popover('toggle')
.popover('dispose')
Nasconde e distrugge il popover di un elemento. I popover che utilizzano la delega (che vengono creati utilizzando l' selector
opzione ) non possono essere distrutti individualmente sugli elementi trigger discendenti.
$('#element').popover('dispose')
.popover('enable')
Dà al popover di un elemento la possibilità di essere mostrato. I popover sono abilitati per impostazione predefinita.
$('#element').popover('enable')
.popover('disable')
Rimuove la possibilità di mostrare il popover di un elemento. Il popover potrà essere mostrato solo se viene riattivato.
$('#element').popover('disable')
.popover('toggleEnabled')
Attiva o disattiva la possibilità di mostrare o nascondere il popover di un elemento.
$('#element').popover('toggleEnabled')
.popover('update')
Aggiorna la posizione del popover di un elemento.
$('#element').popover('update')
Eventi
Tipo di evento | Descrizione |
---|---|
show.bs.popover | Questo evento viene attivato immediatamente quando show viene chiamato il metodo dell'istanza. |
mostrato.bs.popover | Questo evento viene attivato quando il popover è stato reso visibile all'utente (attenderà il completamento delle transizioni CSS). |
nascondi.bs.popover | Questo evento viene generato immediatamente quando hide viene chiamato il metodo dell'istanza. |
popover.bs.nascosto | Questo evento viene attivato quando il popover ha finito di essere nascosto all'utente (attenderà il completamento delle transizioni CSS). |
inserito.bs.popover | Questo evento viene attivato dopo l' show.bs.popover evento quando il modello popover è stato aggiunto al DOM. |
$('#myPopover').on('hidden.bs.popover', function () {
// do something...
})