Attiva/disattiva le sovrapposizioni contestuali per la visualizzazione di elenchi di collegamenti e altro con il plug-in a discesa Bootstrap.
Panoramica
I menu a discesa sono sovrapposizioni contestuali attivabili per visualizzare elenchi di collegamenti e altro. Sono resi interattivi con il plug-in JavaScript a discesa Bootstrap incluso. Vengono attivati facendo clic, non passando con il mouse; questa è una decisione progettuale intenzionale.
I menu a discesa sono basati su una libreria di terze parti, Popper.js , che fornisce posizionamento dinamico e rilevamento del viewport. Assicurati di includere popper.min.js prima di JavaScript di Bootstrap o usa bootstrap.bundle.min.js/ bootstrap.bundle.jsche contiene Popper.js. Popper.js non viene utilizzato per posizionare i menu a discesa nelle barre di navigazione, anche se non è richiesto il posizionamento dinamico.
Se stai creando il nostro JavaScript dal sorgente, richiedeutil.js .
Accessibilità
Lo standard WAI ARIA definisce un vero e proprio role="menu"widget , ma questo è specifico per i menu simili a applicazioni che attivano azioni o funzioni. I menu ARIA possono contenere solo voci di menu, voci di menu checkbox, voci di menu di pulsanti di opzione, gruppi di pulsanti di opzione e sottomenu.
I menu a discesa di Bootstrap, d'altra parte, sono progettati per essere generici e applicabili a una varietà di situazioni e strutture di markup. Ad esempio, è possibile creare menu a discesa che contengono input aggiuntivi e controlli dei moduli, come campi di ricerca o moduli di accesso. Per questo motivo, Bootstrap non si aspetta (né aggiunge automaticamente) nessuno degli attributi rolee richiesti per i veri menu ARIA . Gli autori dovranno includere essi stessi questi attributi più specifici.aria-
Tuttavia, Bootstrap aggiunge il supporto integrato per la maggior parte delle interazioni standard del menu della tastiera, come la possibilità di spostarsi tra i singoli .dropdown-itemelementi utilizzando i tasti cursore e chiudere il menu con il ESCtasto.
Esempi
Avvolgi l'interruttore del menu a discesa (il tuo pulsante o collegamento) e il menu a discesa all'interno di .dropdown, o un altro elemento che dichiara position: relative;. I menu a discesa possono essere attivati da <a>o <button>elementi per soddisfare meglio le tue potenziali esigenze.
Pulsante singolo
Qualsiasi singolo .btnpuò essere trasformato in un interruttore a discesa con alcune modifiche al markup. Ecco come puoi metterli in funzione con entrambi <button>gli elementi:
Allo stesso modo, crea menu a discesa dei pulsanti divisi con praticamente lo stesso markup dei menu a discesa dei pulsanti singoli, ma con l'aggiunta di .dropdown-toggle-splituna spaziatura adeguata attorno al cursore a discesa.
Usiamo questa classe extra per ridurre l'orizzontale paddingsu entrambi i lati del cursore del 25% e rimuovere margin-leftquello aggiunto per i normali menu a discesa dei pulsanti. Queste modifiche extra mantengono il cursore centrato nel pulsante di divisione e forniscono un'area di successo di dimensioni più appropriate accanto al pulsante principale.
Storicamente i contenuti del menu a discesa dovevano essere collegamenti, ma non è più il caso della v4. Ora puoi opzionalmente utilizzare <button>elementi nei tuoi menu a discesa anziché solo <a>s.
Puoi anche creare elementi a discesa non interattivi con .dropdown-item-text. Sentiti libero di personalizzare ulteriormente lo stile con CSS o utilità di testo personalizzati.
Per impostazione predefinita, un menu a discesa viene posizionato automaticamente al 100% dall'alto e lungo il lato sinistro del suo genitore. Aggiungi .dropdown-menu-righta a .dropdown-menuper allineare a destra il menu a discesa.
Dritta! I menu a discesa sono posizionati grazie a Popper.js (tranne quando sono contenuti in una barra di navigazione).
Contenuto del menu
Intestazioni
Aggiungi un'intestazione per etichettare sezioni di azioni in qualsiasi menu a discesa.
Posiziona qualsiasi testo a mano libera all'interno di un menu a discesa con testo e utilizza le utilità di spaziatura . Tieni presente che probabilmente avrai bisogno di stili di ridimensionamento aggiuntivi per limitare la larghezza del menu.
Un testo di esempio che scorre liberamente all'interno del menu a discesa.
E questo è un altro testo di esempio.
Le forme
Inserisci un modulo all'interno di un menu a discesa o trasformalo in un menu a discesa e utilizza le utilità di margine o riempimento per dargli lo spazio negativo necessario.
Tramite attributi di dati o JavaScript, il plug-in a discesa attiva o disattiva il contenuto nascosto (menu a discesa) attivando la .showclasse sull'elemento dell'elenco padre. L' data-toggle="dropdown"attributo viene utilizzato per la chiusura dei menu a discesa a livello di applicazione, quindi è una buona idea utilizzarlo sempre.
Sui dispositivi abilitati al tocco, l'apertura di un menu a discesa aggiunge gestori vuoti ( $.noop) mouseoverai figli immediati <body>dell'elemento. Questo hack certamente brutto è necessario per aggirare una stranezza nella delega dell'evento di iOS , che altrimenti impedirebbe a un tocco in qualsiasi punto al di fuori del menu a discesa di attivare il codice che chiude il menu a discesa. Una volta chiuso il menu a discesa, questi mouseovergestori vuoti aggiuntivi vengono rimossi.
Tramite attributi di dati
Aggiungi data-toggle="dropdown"a un link o un pulsante per attivare un menu a discesa.
Tramite JavaScript
Chiama i menu a discesa tramite JavaScript:
data-toggle="dropdown"ancora richiesto
Indipendentemente dal fatto che chiami il menu a discesa tramite JavaScript o utilizzi invece data-api, data-toggle="dropdown"è sempre necessario essere presente sull'elemento trigger del menu a discesa.
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-offset="".
Nome
Tipo
Predefinito
Descrizione
compensare
numero | stringa | funzione
0
Offset del menu a discesa rispetto al suo target. Per ulteriori informazioni, fare riferimento ai documenti di offset di Popper.js .
Flip
booleano
VERO
Consenti a Dropdown di capovolgersi in caso di sovrapposizione sull'elemento di riferimento. Per ulteriori informazioni, fare riferimento ai documenti flip di Popper.js .
confine
stringa | elemento
'scorri Genitore'
Limite del vincolo di overflow del menu a discesa. Accetta i valori di 'viewport', 'window', 'scrollParent'o un riferimento HTMLElement (solo JavaScript). Per ulteriori informazioni, fare riferimento ai documenti preventOverflow di Popper.js .
riferimento
stringa | elemento
'attiva'
Elemento di riferimento del menu a tendina. Accetta i valori di 'toggle', 'parent'o un riferimento HTMLElement. Per ulteriori informazioni, fare riferimento a referenceObject docs di Popper.js .
Schermo
corda
'dinamico'
Per impostazione predefinita, utilizziamo Popper.js per il posizionamento dinamico. Disabilita questo con static.
Nota quando boundaryè impostato su un valore diverso da 'scrollParent', lo stile position: staticviene applicato al .dropdowncontenitore.
Metodi
Metodo
Descrizione
$().dropdown('toggle')
Attiva o disattiva il menu a discesa di una determinata barra di navigazione o la navigazione a schede.
$().dropdown('update')
Aggiorna la posizione del menu a discesa di un elemento.
$().dropdown('dispose')
Distrugge il menu a discesa di un elemento.
Eventi
Tutti gli eventi a discesa vengono attivati .dropdown-menusull'elemento padre di ' e hanno una relatedTargetproprietà, il cui valore è l'elemento di ancoraggio commutante. hide.bs.dropdowne hidden.bs.dropdowngli eventi hanno una clickEventproprietà (solo quando il tipo di evento originale è click) che contiene un oggetto evento per l'evento click.
Evento
Descrizione
show.bs.dropdown
Questo evento viene attivato immediatamente quando viene chiamato il metodo show instance.
shown.bs.dropdown
Questo evento viene attivato quando il menu a discesa è stato reso visibile all'utente (attenderà il completamento delle transizioni CSS).
hide.bs.dropdown
Questo evento viene generato immediatamente quando viene chiamato il metodo dell'istanza hide.
hidden.bs.dropdown
Questo evento viene attivato quando il menu a discesa ha finito di essere nascosto all'utente (attenderà il completamento delle transizioni CSS).