Alterna as superposicións contextuais para mostrar listas de ligazóns e moito máis co complemento despregable Bootstrap.
Visión xeral
Os menús despregables son superposicións contextuais alternables para mostrar listas de ligazóns e moito máis. Fanse interactivos co complemento de JavaScript Bootstrap incluído. Alternanse facendo clic, non pasando o rato; esta é unha decisión de deseño intencionada .
Os menús despregable están construídos nunha biblioteca de terceiros, Popper.js , que proporciona un posicionamento dinámico e detección de vistas. Asegúrate de incluír popper.min.js antes do JavaScript de Bootstrap ou usa bootstrap.bundle.min.js/ bootstrap.bundle.jsque contén Popper.js. Popper.js non se usa para colocar menús despregables nas barras de navegación, aínda que non é necesario o posicionamento dinámico.
Se estás construíndo o noso JavaScript desde a orixe, requireutil.js .
Accesibilidade
O estándar WAI ARIArole="menu" define un widget real , pero este é específico para menús tipo aplicación que activan accións ou funcións. Os menús de ARIA só poden conter elementos de menú, elementos de menú de caixa de verificación, elementos de menú de botóns de opción, grupos de botóns de opción e submenús.
Os menús despregables de Bootstrap, por outra banda, están deseñados para ser xenéricos e aplicables a unha variedade de situacións e estruturas de marcado. Por exemplo, é posible crear menús despregables que conteñan entradas adicionais e controis de formulario, como campos de busca ou formularios de inicio de sesión. Por este motivo, Bootstrap non espera (nin engade automaticamente) ningún dos atributos rolee aria-necesarios para os verdadeiros menús ARIA . Os autores terán que incluír estes atributos máis específicos.
Non obstante, Bootstrap engade soporte integrado para a maioría das interaccións estándar do menú do teclado, como a posibilidade de moverse por .dropdown-itemelementos individuais usando as teclas do cursor e pechar o menú coa ESCtecla.
Exemplos
Envolve o selector do menú despregable (o teu botón ou ligazón) e o menú despregable dentro .dropdownde , ou noutro elemento que declare position: relative;. Os menús desplegables pódense activar desde <a>ou <button>elementos que se axusten mellor ás túas necesidades potenciais.
Botón único
Calquera .btnelemento pode converterse nun menú despregable con algúns cambios de marcado. Vexa como pode facelos funcionar con calquera dos <button>elementos:
Do mesmo xeito, cree menús despregables de botóns divididos practicamente co mesmo marcado que os menús despregábeis de botóns únicos, pero coa adición de .dropdown-toggle-splitpara un espazo adecuado ao redor do cursor do menú despregable.
Usamos esta clase adicional para reducir a horizontal paddinga cada lado do cursor nun 25 % e eliminar o margin-leftque se engade para os menús despregables de botóns habituais. Eses cambios adicionais manteñen o cursor centrado no botón dividido e proporcionan unha área de golpe de tamaño máis axeitado xunto ao botón principal.
Históricamente, os contidos do menú despregable tiñan que ser ligazóns, pero ese xa non é o caso da versión 4. Agora podes usar opcionalmente <button>elementos nos teus menús despregables en lugar de só <a>s.
Tamén podes crear elementos do menú despregable non interactivos con .dropdown-item-text. Non dubides en facer máis estilo con CSS personalizados ou utilidades de texto.
De xeito predeterminado, un menú despregable sitúase automaticamente ao 100 % desde a parte superior e ao lado esquerdo do seu pai. Engadir .dropdown-menu-rightao .dropdown-menualiñar á dereita o menú despregable.
Aviso! Os menús despregables sitúanse grazas a Popper.js (excepto cando están contidos nunha barra de navegación).
Aliñación sensible
Se queres usar o aliñamento receptivo, desactiva o posicionamento dinámico engadindo o data-display="static"atributo e utiliza as clases de variación sensible.
Para aliñar á dereita o menú despregable co punto de interrupción indicado ou máis grande, engade .dropdown-menu{-sm|-md|-lg|-xl}-right.
Para aliñar o menú despregable á esquerda co punto de interrupción indicado ou máis grande, engade .dropdown-menu-righte .dropdown-menu{-sm|-md|-lg|-xl}-left.
Teña en conta que non é necesario engadir un data-display="static"atributo aos botóns despregables nas barras de navegación, xa que Popper.js non se usa nas barras de navegación.
Contido do menú
Cabeceiras
Engade unha cabeceira para etiquetar seccións de accións en calquera menú despregable.
Coloque calquera texto de forma libre nun menú despregable con texto e use as utilidades de espazado . Teña en conta que probablemente necesitará estilos de tamaño adicionais para limitar o ancho do menú.
Algún texto de exemplo que flúe libremente no menú despregable.
E este é un texto máis de exemplo.
Formularios
Coloca un formulario nun menú despregable ou convérteo nun menú despregable e usa as utilidades de marxe ou de recheo para darlle o espazo negativo que necesitas.
A través de atributos de datos ou JavaScript, o complemento despregable alterna o contido oculto (menús despregables) alternando a .showclase no elemento da lista principal. Confíase data-toggle="dropdown"no atributo para pechar os menús despregables a nivel de aplicación, polo que é unha boa idea usalo sempre.
Nos dispositivos táctiles, ao abrir un menú despregable engádense controladores ( $.noop) baleiros mouseoveraos fillos inmediatos do <body>elemento. Este truco feo é necesario para evitar unha peculiaridade na delegación de eventos de iOS , que doutro xeito evitaría que un toque en calquera lugar fóra do menú despregable active o código que pecha o menú despregable. mouseoverUnha vez que se pecha o menú despregable, elimínanse estes controladores baleiros adicionais .
A través de atributos de datos
Engadir data-toggle="dropdown"a unha ligazón ou botón para alternar un menú despregable.
Vía JavaScript
Chame aos menús despregables mediante JavaScript:
data-toggle="dropdown"aínda necesario
Independentemente de se chamas ao teu menú despregable mediante JavaScript ou usas a API de datos, data-toggle="dropdown"sempre é necesario que estea presente no elemento de activación do menú despregable.
Opcións
As opcións pódense pasar a través de atributos de datos ou JavaScript. Para os atributos de datos, engada o nome da opción a data-, como en data-offset="".
Nome
Tipo
Por defecto
Descrición
compensar
número | cadea | función
0
Compensación do menú despregable en relación ao seu obxectivo.
Cando se usa unha función para determinar a compensación, chámase cun obxecto que contén os datos de compensación como primeiro argumento. A función debe devolver un obxecto coa mesma estrutura. O nodo DOM do elemento desencadeante pásase como segundo argumento.
Para obter máis información, consulte os documentos de offset de Popper.js .
voltear
booleano
verdade
Permitir que o menú despregable se voltee no caso de que se solape o elemento de referencia. Para obter máis información, consulte os flip docs de Popper.js .
límite
cadea | elemento
'scrollParent'
Límite de restricción de desbordamento do menú despregable. Acepta os valores de 'viewport', 'window', 'scrollParent', ou unha referencia HTMLElement (só JavaScript). Para obter máis información, consulte os documentos preventOverflow de Popper.js .
referencia
cadea | elemento
'alternar'
Elemento de referencia do menú despregable. Acepta os valores de 'toggle', 'parent', ou unha referencia HTMLElement. Para obter máis información, consulte os documentos referenceObject de Popper.js .
visualización
corda
'dinámico'
Por defecto, usamos Popper.js para o posicionamento dinámico. Desactiva isto con static.
Teña en conta que cando boundaryse define en calquera valor que non sexa 'scrollParent', o estilo position: staticaplícase ao .dropdowncontedor.
Métodos
Método
Descrición
$().dropdown('toggle')
Alterna o menú despregable dunha determinada barra de navegación ou navegación por pestanas.
$().dropdown('show')
Mostra o menú despregable dunha determinada barra de navegación ou navegación por pestanas.
$().dropdown('hide')
Oculta o menú despregable dunha determinada barra de navegación ou navegación por pestanas.
$().dropdown('update')
Actualiza a posición do menú despregable dun elemento.
$().dropdown('dispose')
Destrúe o menú despregable dun elemento.
Eventos
Todos os eventos do menú despregable desenvólvense no .dropdown-menuelemento pai de ' e teñen unha relatedTargetpropiedade, cuxo valor é o elemento de áncora alternante. hide.bs.dropdowne hidden.bs.dropdownos eventos teñen unha clickEventpropiedade (só cando o tipo de evento orixinal é click) que contén un obxecto de evento para o evento de clic.
Evento
Descrición
show.bs.dropdown
Este evento desenvólvese inmediatamente cando se chama ao método show instance.
shown.bs.dropdown
Este evento desenvólvese cando o menú despregable se fixo visible para o usuario (esperará a que se completen as transicións CSS).
hide.bs.dropdown
Este evento desenvólvese inmediatamente cando se chamou ao método de ocultar instancia.
hidden.bs.dropdown
Este evento desenvólvese cando o menú despregable rematou de ocultarse ao usuario (esperará a que se completen as transicións CSS).