Commuteu les superposicions contextuals per mostrar llistes d'enllaços i més amb el connector desplegable Bootstrap.
Visió general
Els menús desplegables són superposicions contextuals alternables per mostrar llistes d'enllaços i molt més. Es fan interactius amb el connector de JavaScript desplegable Bootstrap inclòs. S'activen fent clic, no passant el cursor; aquesta és una decisió de disseny intencionada .
Els desplegables es basen en una biblioteca de tercers, Popper.js , que proporciona un posicionament dinàmic i detecció de finestres. Assegureu-vos d'incloure popper.min.js abans del JavaScript de Bootstrap o utilitzeu bootstrap.bundle.min.js/ bootstrap.bundle.jsque conté Popper.js. Popper.js no s'utilitza per col·locar menús desplegables a les barres de navegació, tot i que no es requereix un posicionament dinàmic.
Si esteu creant el nostre JavaScript des de la font, requereixutil.js .
Accessibilitat
L' estàndard WAI ARIA defineix un role="menu"estris real , però això és específic dels menús semblants a aplicacions que desencadenen accions o funcions. Els menús ARIA només poden contenir elements de menú, elements de menú de caselles de selecció, elements de menú de botons d'opció, grups de botons d'opció i submenús.
Els menús desplegables de Bootstrap, d'altra banda, estan dissenyats per ser genèrics i aplicables a una varietat de situacions i estructures de marcatge. Per exemple, és possible crear menús desplegables que continguin entrades addicionals i controls de formulari, com ara camps de cerca o formularis d'inici de sessió. Per aquest motiu, Bootstrap no espera (ni afegeix automàticament) cap dels atributs rolei necessaris per als menús ARIA reals. Els autors hauran d'incloure ells mateixos aquests atributs més específics.aria-
Tanmateix, Bootstrap afegeix suport integrat per a la majoria de les interaccions estàndard del menú del teclat, com ara la possibilitat de moure's per .dropdown-itemelements individuals mitjançant les tecles del cursor i tancar el menú amb la ESCtecla.
Exemples
Emboliqui el commutador del menú desplegable (el teu botó o enllaç) i el menú desplegable dins .dropdown, o un altre element que declari position: relative;. Els desplegables es poden activar a partir d' <a>elements <button>que s'ajustin millor a les vostres necessitats potencials.
Botó únic
Qualsevol sol .btnes pot convertir en un menú desplegable amb alguns canvis de marcatge. A continuació s'explica com podeu posar-los en funcionament amb qualsevol dels <button>elements:
De la mateixa manera, creeu menús desplegables de botons dividits amb pràcticament el mateix marcatge que els menús desplegables d'un sol botó, però amb l'addició d' .dropdown-toggle-splitun espai adequat al voltant del cursor desplegable.
Utilitzem aquesta classe addicional per reduir paddingun 25% l'horitzontal a banda i banda del cursor i eliminar el margin-leftque s'afegeix als menús desplegables de botons habituals. Aquests canvis addicionals mantenen el cursor centrat al botó dividit i proporcionen una àrea de mida més adequada al costat del botó principal.
Històricament, els continguts del menú desplegable havien de ser enllaços, però això ja no és el cas de la v4. Ara podeu utilitzar, opcionalment, <button>elements als vostres menús desplegables en lloc de només <a>s.
També podeu crear elements desplegables no interactius amb .dropdown-item-text. No dubteu a crear més estil amb CSS o utilitats de text personalitzades.
Per defecte, un menú desplegable es col·loca automàticament al 100% des de la part superior i al costat esquerre del seu pare. Afegeix .dropdown-menu-righta una .dropdown-menualineació a la dreta del menú desplegable.
Caps amunt! Els desplegables es col·loquen gràcies a Popper.js (excepte quan estan continguts en una barra de navegació).
Alineació sensible
Si voleu utilitzar l'alineació sensible, desactiveu el posicionament dinàmic afegint l' data-display="static"atribut i utilitzeu les classes de variació sensible.
Per alinear a la dreta el menú desplegable amb el punt d'interrupció donat o més gran, afegiu .dropdown-menu{-sm|-md|-lg|-xl}-right.
Per alinear el menú desplegable a l' esquerra.dropdown-menu-right amb el punt d'interrupció donat o més gran, afegiu i .dropdown-menu{-sm|-md|-lg|-xl}-left.
Tingueu en compte que no cal que afegiu un data-display="static"atribut als botons desplegables de les barres de navegació, ja que Popper.js no s'utilitza a les barres de navegació.
Contingut del menú
Capçaleres
Afegiu una capçalera per etiquetar seccions d'accions a qualsevol menú desplegable.
Col·loqueu qualsevol text de forma lliure dins d'un menú desplegable amb text i utilitzeu les utilitats d'espaiat . Tingueu en compte que probablement necessitareu estils de mida addicionals per limitar l'amplada del menú.
Alguns exemples de text que flueixen lliurement dins del menú desplegable.
I aquest és un text més d'exemple.
Formes
Col·loqueu un formulari dins d'un menú desplegable o feu-lo en un menú desplegable i utilitzeu les utilitats de marge o farciment per donar-li l'espai negatiu que necessiteu.
Mitjançant atributs de dades o JavaScript, el connector desplegable alterna el contingut ocult (menús desplegables) canviant la .showclasse a l'element de la llista principal. Es data-toggle="dropdown"confia en l'atribut per tancar menús desplegables a nivell d'aplicació, així que és una bona idea utilitzar-lo sempre.
En dispositius tàctils, l'obertura d'un menú desplegable afegeix controladors buits ( $.noop) mouseoverals fills immediats de l' <body>element. Aquest hack, certament lleig, és necessari per evitar una peculiaritat en la delegació d'esdeveniments d'iOS , que d'altra manera evitaria que un toc en qualsevol lloc fora del menú desplegable desencadenés el codi que tanca el menú desplegable. Un cop tancat el menú desplegable, mouseovers'eliminen aquests controladors buits addicionals.
Mitjançant atributs de dades
Afegeix data-toggle="dropdown"a un enllaç o un botó per canviar un menú desplegable.
Mitjançant JavaScript
Truqueu als menús desplegables mitjançant JavaScript:
data-toggle="dropdown"encara requerit
Independentment de si truqueu al vostre menú desplegable mitjançant JavaScript o utilitzeu l'api de dades, data-toggle="dropdown"sempre cal que estigui present a l'element activador del menú desplegable.
Opcions
Les opcions es poden passar mitjançant atributs de dades o JavaScript. Per als atributs de dades, afegiu el nom de l'opció a data-, com a data-offset="".
Nom
Tipus
Per defecte
Descripció
compensació
nombre | cadena | funció
0
Desplaçament del menú desplegable en relació al seu objectiu.
Quan s'utilitza una funció per determinar el desplaçament, es crida amb un objecte que conté les dades del desplaçament com a primer argument. La funció ha de retornar un objecte amb la mateixa estructura. El node DOM de l'element desencadenant es passa com a segon argument.
Per obtenir més informació, consulteu els documents d' offset de Popper.js .
voltejar
booleà
veritat
Permet que el desplegable giri en cas de superposició a l'element de referència. Per obtenir més informació, consulteu els documents flip de Popper.js .
límit
cadena | element
'scrollParent'
Límit de restricció de desbordament del menú desplegable. Accepta els valors de 'viewport', 'window', 'scrollParent', o una referència HTMLElement (només JavaScript). Per obtenir més informació, consulteu els documents preventOverflow de Popper.js .
Tingueu en compte que quan boundarys'estableix un valor diferent de 'scrollParent', l'estil position: statics'aplica al .dropdowncontenidor.
Mètodes
Mètode
Descripció
$().dropdown('toggle')
Activa o desactiva el menú desplegable d'una barra de navegació determinada o de la navegació per pestanyes.
$().dropdown('show')
Mostra el menú desplegable d'una barra de navegació determinada o una navegació per pestanyes.
$().dropdown('hide')
Oculta el menú desplegable d'una barra de navegació o navegació per pestanyes determinada.
$().dropdown('update')
Actualitza la posició del menú desplegable d'un element.
$().dropdown('dispose')
Destrueix el menú desplegable d'un element.
Esdeveniments
Tots els esdeveniments desplegables es desencadenen a l' .dropdown-menuelement pare de ' i tenen una relatedTargetpropietat, el valor de la qual és l'element d'ancoratge alternatiu. hide.bs.dropdowni hidden.bs.dropdownels esdeveniments tenen una clickEventpropietat (només quan el tipus d'esdeveniment original és click) que conté un objecte d'esdeveniment per a l'esdeveniment de clic.
Esdeveniment
Descripció
show.bs.dropdown
Aquest esdeveniment s'activa immediatament quan es crida al mètode d'instància de mostra.
shown.bs.dropdown
Aquest esdeveniment s'activa quan el desplegable s'ha fet visible per a l'usuari (esperarà que finalitzin les transicions CSS).
hide.bs.dropdown
Aquest esdeveniment s'activa immediatament quan s'ha cridat el mètode d'instància oculta.
hidden.bs.dropdown
Aquest esdeveniment s'activa quan el menú desplegable s'ha acabat d'ocultar a l'usuari (esperarà que finalitzin les transicions CSS).