Salta al contenuto principale Passa alla navigazione dei documenti
Check
in English

Suggerimenti

Documentazione ed esempi per l'aggiunta di suggerimenti Bootstrap personalizzati con CSS e JavaScript utilizzando CSS3 per le animazioni e gli attributi data-bs per l'archiviazione del titolo locale.

Panoramica

Cose da sapere quando si utilizza il plug-in tooltip:

  • Le descrizioni comandi si basano sulla libreria di terze parti Popper per il posizionamento. Devi includere popper.min.js prima bootstrap.jso usarne uno bootstrap.bundle.min.jsche contenga Popper.
  • Le descrizioni comandi sono attivabili per motivi di prestazioni, quindi devi inizializzarle tu stesso .
  • Le descrizioni comandi con titoli di lunghezza zero non vengono mai visualizzate.
  • 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 suggerimenti sugli elementi nascosti non funzionerà.
  • I suggerimenti per gli elementi .disabledo disableddevono essere attivati ​​su un elemento wrapper.
  • Quando vengono attivati ​​da collegamenti ipertestuali che si estendono su più righe, i suggerimenti vengono centrati. Usa white-space: nowrap;sui tuoi <a>messaggi di posta elettronica per evitare questo comportamento.
  • I suggerimenti devono essere nascosti prima che gli elementi corrispondenti siano stati rimossi dal DOM.
  • I tooltip possono essere attivati ​​grazie a un elemento all'interno di un DOM ombra.

Hai tutto questo? Ottimo, vediamo come funzionano con alcuni esempi.

Per impostazione predefinita, questo componente utilizza il disinfettante di contenuto integrato, che elimina tutti gli elementi HTML non esplicitamente consentiti. Vedere la sezione disinfettante nella nostra documentazione JavaScript per maggiori dettagli.
L'effetto di animazione di questo componente dipende dalla prefers-reduced-motionmedia query. Vedi la sezione movimento ridotto della nostra documentazione sull'accessibilità .

Esempi

Abilita suggerimenti

Come accennato in precedenza, è necessario inizializzare i suggerimenti prima di poterli utilizzare. Un modo per inizializzare tutti i suggerimenti su una pagina sarebbe selezionarli in base al loro data-bs-toggleattributo, in questo modo:

const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))

Passa il mouse sui link sottostanti per vedere i suggerimenti:

Testo segnaposto per mostrare alcuni collegamenti in linea con suggerimenti. Questo ora è solo riempitivo, nessun killer. Contenuto inserito qui solo per simulare la presenza di testo reale . E tutto questo solo per darti un'idea di come apparirebbero i suggerimenti quando usati in situazioni del mondo reale. Quindi si spera che ora tu abbia visto come questi suggerimenti sui collegamenti possono funzionare nella pratica, una volta che li usi sul tuo sito o progetto.

html
<p class="muted">Placeholder text to demonstrate some <a href="#" data-bs-toggle="tooltip" data-bs-title="Default tooltip">inline links</a> with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of <a href="#" data-bs-toggle="tooltip" data-bs-title="Another tooltip">real text</a>. And all that just to give you an idea of how tooltips would look when used in real-world situations. So hopefully you've now seen how <a href="#" data-bs-toggle="tooltip" data-bs-title="Another one here too">these tooltips on links</a> can work in practice, once you use them on <a href="#" data-bs-toggle="tooltip" data-bs-title="The last tip!">your own</a> site or project.
</p>
Sentiti libero di usare uno titleo data-bs-titlenel tuo HTML. Quando titleviene utilizzato, Popper lo sostituirà automaticamente con data-bs-titlequando l'elemento viene renderizzato.

Suggerimenti personalizzati

Aggiunto nella v5.2.0

Puoi personalizzare l'aspetto delle descrizioni comandi utilizzando le variabili CSS . Impostiamo una classe personalizzata con data-bs-custom-class="custom-tooltip"l'ambito del nostro aspetto personalizzato e la usiamo per sovrascrivere una variabile CSS locale.

.custom-tooltip {
  --bs-tooltip-bg: var(--bs-primary);
}
html
<button type="button" class="btn btn-secondary"
        data-bs-toggle="tooltip" data-bs-placement="top"
        data-bs-custom-class="custom-tooltip"
        data-bs-title="This top tooltip is themed via CSS variables.">
  Custom tooltip
</button>

Indicazioni

Passa il mouse sopra i pulsanti sottostanti per vedere le quattro direzioni dei suggerimenti: in alto, a destra, in basso e a sinistra. Le direzioni vengono rispecchiate quando si utilizza Bootstrap in RTL.

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-title="Tooltip on top">
  Tooltip on top
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" data-bs-title="Tooltip on right">
  Tooltip on right
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Tooltip on bottom">
  Tooltip on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="Tooltip on left">
  Tooltip on left
</button>

E con l'aggiunta di HTML personalizzato:

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" data-bs-title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
  Tooltip with HTML
</button>

Con un SVG:

CSS

Variabili

Aggiunto nella v5.2.0

Come parte dell'approccio in evoluzione delle variabili CSS di Bootstrap, i suggerimenti ora utilizzano le variabili CSS locali .tooltipper una migliore personalizzazione in tempo reale. I valori per le variabili CSS vengono impostati tramite Sass, quindi anche la personalizzazione di Sass è ancora supportata.

  --#{$prefix}tooltip-zindex: #{$zindex-tooltip};
  --#{$prefix}tooltip-max-width: #{$tooltip-max-width};
  --#{$prefix}tooltip-padding-x: #{$tooltip-padding-x};
  --#{$prefix}tooltip-padding-y: #{$tooltip-padding-y};
  --#{$prefix}tooltip-margin: #{$tooltip-margin};
  @include rfs($tooltip-font-size, --#{$prefix}tooltip-font-size);
  --#{$prefix}tooltip-color: #{$tooltip-color};
  --#{$prefix}tooltip-bg: #{$tooltip-bg};
  --#{$prefix}tooltip-border-radius: #{$tooltip-border-radius};
  --#{$prefix}tooltip-opacity: #{$tooltip-opacity};
  --#{$prefix}tooltip-arrow-width: #{$tooltip-arrow-width};
  --#{$prefix}tooltip-arrow-height: #{$tooltip-arrow-height};
  

variabili Sas

$tooltip-font-size:                 $font-size-sm;
$tooltip-max-width:                 200px;
$tooltip-color:                     $white;
$tooltip-bg:                        $black;
$tooltip-border-radius:             $border-radius;
$tooltip-opacity:                   .9;
$tooltip-padding-y:                 $spacer * .25;
$tooltip-padding-x:                 $spacer * .5;
$tooltip-margin:                    null; // TODO: remove this in v6

$tooltip-arrow-width:               .8rem;
$tooltip-arrow-height:              .4rem;
// fusv-disable
$tooltip-arrow-color:               null; // Deprecated in Bootstrap 5.2.0 for CSS variables
// fusv-enable

Utilizzo

Il plug-in tooltip genera contenuto e markup su richiesta e, per impostazione predefinita, posiziona i suggerimenti dopo il loro elemento di attivazione.

Attiva il suggerimento tramite JavaScript:

const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Troppo pieno autoescroll

La posizione della descrizione comando tenta di cambiare automaticamente quando un contenitore padre ha overflow: autoo overflow: scrollcome il nostro .table-responsive, ma mantiene comunque il posizionamento del posizionamento originale. Per risolvere questo problema, imposta l' boundaryopzione (per il modificatore di capovolgimento che usa l' popperConfigopzione) su qualsiasi HTMLElement per sovrascrivere il valore predefinito, 'clippingParents', come ad esempio document.body:

const tooltip = new bootstrap.Tooltip('#example', {
  boundary: document.body // or document.querySelector('#boundary')
})

Marcatura

Il markup richiesto per un suggerimento è solo un dataattributo e titlesull'elemento HTML desideri avere un suggerimento. Il markup generato di un tooltip è piuttosto semplice, sebbene richieda una posizione (per impostazione predefinita, impostata topdal plug-in).

Fare in modo che le descrizioni comandi funzionino per gli utenti di tastiere e tecnologie assistive

Dovresti aggiungere suggerimenti solo agli elementi HTML che sono tradizionalmente attivabili da tastiera e interattivi (come collegamenti o controlli modulo). 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 suggerimento in questa situazione. Inoltre, non fare affidamento solo su hovercome trigger per la tua descrizione comando, poiché ciò renderà impossibile attivare le tue descrizioni comando per gli utenti della tastiera.

<!-- HTML to write -->
<a href="#" data-bs-toggle="tooltip" data-bs-title="Some tooltip text!">Hover over me</a>

<!-- Generated markup by the plugin -->
<div class="tooltip bs-tooltip-top" role="tooltip">
  <div class="tooltip-arrow"></div>
  <div class="tooltip-inner">
    Some tooltip text!
  </div>
</div>

Elementi disabilitati

Gli elementi con l' disabledattributo non sono interattivi, il che significa che gli utenti non possono concentrarsi, passare il mouse o fare clic su di essi per attivare una descrizione comando (o popover). Come soluzione alternativa, ti consigliamo di attivare il suggerimento da un wrapper <div>o <span>, idealmente reso attivabile dalla tastiera utilizzando tabindex="0".

html
<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-title="Disabled tooltip">
  <button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>

Opzioni

Poiché le opzioni possono essere passate tramite attributi di dati o JavaScript, puoi aggiungere un nome di opzione a data-bs-, come in data-bs-animation="{value}". Assicurati di cambiare il tipo di caso del nome dell'opzione da " camelCase " a " kebab-case " quando passi le opzioni tramite attributi di dati. Ad esempio, utilizzare data-bs-custom-class="beautifier"invece di data-bs-customClass="beautifier".

A partire da Bootstrap 5.2.0, tutti i componenti supportano un attributo di dati riservato sperimentaledata-bs-config che può ospitare una semplice configurazione del componente come una stringa JSON. Quando un elemento ha data-bs-config='{"delay":0, "title":123}'e data-bs-title="456"attributi, il titlevalore finale sarà 456e gli attributi di dati separati sovrascriveranno i valori forniti su data-bs-config. Inoltre, gli attributi di dati esistenti sono in grado di ospitare valori JSON come data-bs-delay='{"show":0,"hide":150}'.

Si noti che per motivi di sicurezza le opzioni sanitize, sanitizeFn, e allowListnon possono essere fornite utilizzando gli attributi dei dati.
Nome Tipo Predefinito Descrizione
allowList oggetto Valore di default Oggetto che contiene attributi e tag consentiti.
animation booleano true Applica una transizione di dissolvenza CSS alla descrizione comando.
boundary stringa, elemento 'clippingParents' Limite del vincolo di overflow della descrizione comando (si applica solo al modificatore preventOverflow di Popper). Per impostazione predefinita, è 'clippingParents'e può accettare un riferimento HTMLElement (solo tramite JavaScript). Per ulteriori informazioni, fare riferimento ai documenti detectionOverflow di Popper .
container stringa, elemento, falso false Aggiunge la descrizione comando a un elemento specifico. Esempio: container: 'body'. Questa opzione è particolarmente utile in quanto consente di posizionare la descrizione comando nel flusso del documento vicino all'elemento di attivazione, impedendo che la descrizione comando si allontani dall'elemento di attivazione durante il ridimensionamento della finestra.
customClass stringa, funzione '' Aggiungi classi alla descrizione comando quando viene visualizzata. Tieni presente che queste classi verranno aggiunte in aggiunta a tutte le classi specificate nel modello. Per aggiungere più classi, separale con spazi: 'class-1 class-2'. Puoi anche passare una funzione che dovrebbe restituire una singola stringa contenente nomi di classi aggiuntivi.
delay numero, oggetto 0 Ritardo di mostrare e nascondere la descrizione comando (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 è: delay: { "show": 500, "hide": 100 }.
fallbackPlacements Vettore ['top', 'right', 'bottom', 'left'] Definisci i posizionamenti di riserva fornendo un elenco di posizionamenti nella matrice (in ordine di preferenza). Per ulteriori informazioni, fare riferimento ai documenti sul comportamento di Popper .
html booleano false Consenti HTML nella descrizione comando. Se true, i tag HTML nella descrizione comando titleverranno visualizzati nella descrizione comando. Se false, innerTextla proprietà verrà utilizzata per inserire contenuto nel DOM. Usa il testo se sei preoccupato per gli attacchi XSS.
offset matrice, stringa, funzione [0, 0] Offset della descrizione comando rispetto alla sua destinazione. Puoi passare una stringa negli attributi dei dati con valori separati da virgole come: data-bs-offset="10,20". Quando una funzione viene utilizzata per determinare l'offset, viene chiamata con un oggetto contenente il posizionamento popper, il riferimento e popper rects come primo argomento. Il nodo DOM dell'elemento di attivazione viene passato come secondo argomento. La funzione deve restituire un array con due numeri: skidding , distance . Per ulteriori informazioni, fare riferimento ai documenti di offset di Popper .
placement stringa, funzione 'top' Come posizionare il suggerimento: automatico, in alto, in basso, a sinistra, a destra. Quando autoè specificato, riorienterà dinamicamente la descrizione comando. Quando una funzione viene utilizzata per determinare il posizionamento, viene chiamata con il nodo DOM della descrizione comando come primo argomento e il nodo DOM dell'elemento di attivazione come secondo. Il thiscontesto è impostato sull'istanza della descrizione comando.
popperConfig nullo, oggetto, funzione null Per modificare la configurazione di Popper predefinita di Bootstrap, vedere Configurazione di Popper . Quando una funzione viene utilizzata per creare la configurazione Popper, viene chiamata con un oggetto che contiene la configurazione Popper predefinita di Bootstrap. Ti aiuta a utilizzare e unire l'impostazione predefinita con la tua configurazione. La funzione deve restituire un oggetto di configurazione per Popper.
sanitize booleano true Abilita o disabilita la sanificazione. Se attivato 'template', 'content'e 'title'le opzioni verranno sanificate.
sanitizeFn nullo, funzione null Qui puoi fornire la tua funzione di sanificazione. Questo può essere utile se si preferisce utilizzare una libreria dedicata per eseguire la sanificazione.
selector stringa, falso false Se viene fornito un selettore, gli oggetti tooltip verranno delegati alle destinazioni specificate. In pratica, questo viene utilizzato anche per applicare i suggerimenti agli elementi DOM aggiunti dinamicamente ( jQuery.onsupporto). Vedere questo problema e un esempio informativo .
template corda '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' HTML di base da utilizzare durante la creazione del suggerimento. I suggerimenti titleverranno inseriti nel file .tooltip-inner. .tooltip-arrowdiventerà la freccia del suggerimento. L'elemento wrapper più esterno dovrebbe avere la .tooltipclasse e role="tooltip".
title stringa, elemento, funzione '' Valore del titolo predefinito se titlel'attributo non è presente. Se viene fornita una funzione, verrà chiamata con il suo thisriferimento impostato all'elemento a cui è collegato il popover.
trigger corda 'hover focus' Come viene attivato il suggerimento comando: clic, passaggio del mouse, messa a fuoco, manuale. Puoi passare più trigger; separali con uno spazio. 'manual'indica che la descrizione comando verrà attivata a livello di codice tramite i metodi .tooltip('show'), .tooltip('hide')e ; .tooltip('toggle')questo valore non può essere combinato con nessun altro trigger. 'hover'di per sé si tradurrà in suggerimenti che non possono essere attivati ​​tramite la tastiera e dovrebbero essere utilizzati solo se sono presenti metodi alternativi per trasmettere le stesse informazioni agli utenti della tastiera.

Attributi dei dati per i singoli suggerimenti

Le opzioni per i singoli suggerimenti possono essere specificati in alternativa tramite l'uso degli attributi dei dati, come spiegato sopra.

Utilizzo della funzione conpopperConfig

const tooltip = new bootstrap.Tooltip(element, {
  popperConfig(defaultBsPopperConfig) {
    // const newPopperConfig = {...}
    // use defaultBsPopperConfig if needed...
    // return newPopperConfig
  }
})

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 .

Metodo Descrizione
disable Rimuove la possibilità di mostrare la descrizione comando di un elemento. La descrizione comando potrà essere visualizzata solo se riattivata.
dispose Nasconde e distrugge il suggerimento di un elemento (rimuove i dati memorizzati sull'elemento DOM). Le descrizioni comandi che utilizzano la delega (che vengono create utilizzando l' selectoropzione ) non possono essere distrutte individualmente sugli elementi trigger discendenti.
enable Dà alla descrizione comando di un elemento la possibilità di essere mostrata. Le descrizioni comandi sono abilitate per impostazione predefinita.
getInstance Metodo statico che ti consente di ottenere l'istanza della descrizione comando associata a un elemento DOM o di crearne una nuova nel caso non sia stata inizializzata.
getOrCreateInstance Metodo statico che ti consente di ottenere l'istanza della descrizione comando associata a un elemento DOM o di crearne una nuova nel caso non sia stata inizializzata.
hide Nasconde la descrizione comando di un elemento. Ritorna al chiamante prima che il suggerimento sia stato effettivamente nascosto (cioè prima hidden.bs.tooltipche si verifichi l'evento). Questo è considerato un'attivazione "manuale" del suggerimento.
setContent Fornisce un modo per modificare il contenuto della descrizione comando dopo la sua inizializzazione.
show Rivela il suggerimento di un elemento. Ritorna al chiamante prima che il suggerimento sia stato effettivamente mostrato (cioè prima shown.bs.tooltipche si verifichi l'evento). Questo è considerato un'attivazione "manuale" del suggerimento. Le descrizioni comandi con titoli di lunghezza zero non vengono mai visualizzate.
toggle Attiva o disattiva la descrizione comando di un elemento. Ritorna al chiamante prima che il suggerimento sia stato effettivamente mostrato o nascosto (cioè prima che si verifichi l' evento shown.bs.tooltipo hidden.bs.tooltip). Questo è considerato un'attivazione "manuale" del suggerimento.
toggleEnabled Attiva o disattiva la possibilità di mostrare o nascondere la descrizione comando di un elemento.
update Aggiorna la posizione della descrizione comando di un elemento.
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance

// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
Il setContentmetodo accetta un objectargomento, in cui ogni chiave di proprietà è un stringselettore valido all'interno del modello popover e ogni valore di proprietà correlato può essere string| element| function| null

Eventi

Evento Descrizione
hide.bs.tooltip Questo evento viene generato immediatamente quando hideviene chiamato il metodo dell'istanza.
hidden.bs.tooltip Questo evento viene attivato quando il popover ha finito di essere nascosto all'utente (attenderà il completamento delle transizioni CSS).
inserted.bs.tooltip Questo evento viene attivato dopo l' show.bs.tooltipevento quando il modello di descrizione comando è stato aggiunto al DOM.
show.bs.tooltip Questo evento viene attivato immediatamente quando showviene chiamato il metodo dell'istanza.
shown.bs.tooltip Questo evento viene attivato quando il popover è stato reso visibile all'utente (attenderà il completamento delle transizioni CSS).
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)

myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
  // do something...
})

tooltip.hide()