Use el complemento modal de JavaScript de Bootstrap para agregar cuadros de diálogo a su sitio para cajas de luz, notificaciones de usuario o contenido completamente personalizado.
Cómo funciona
Antes de comenzar con el componente modal de Bootstrap, asegúrese de leer lo siguiente, ya que nuestras opciones de menú han cambiado recientemente.
Los modales se construyen con HTML, CSS y JavaScript. Se colocan sobre todo lo demás en el documento y eliminan el desplazamiento <body>para que el contenido modal se desplace en su lugar.
Al hacer clic en el "telón de fondo" modal, se cerrará automáticamente el modal.
Bootstrap solo admite una ventana modal a la vez. Los modales anidados no son compatibles porque creemos que son experiencias de usuario deficientes.
Uso de modales position: fixed, que a veces puede ser un poco particular sobre su representación. Siempre que sea posible, coloque su HTML modal en una posición de nivel superior para evitar posibles interferencias de otros elementos. Es probable que tenga problemas al anidar .modaldentro de otro elemento fijo.
Debido a cómo HTML5 define su semántica, el autofocusatributo HTML no tiene efecto en los modales de Bootstrap. Para lograr el mismo efecto, use JavaScript personalizado:
Siga leyendo para obtener demostraciones y pautas de uso.
Ejemplos
componentes modales
A continuación se muestra un ejemplo modal estáticoposition (lo que significa que displayha sido anulado). Se incluyen el encabezado modal, el cuerpo modal (obligatorio para padding) y el pie de página modal (opcional). Le pedimos que incluya encabezados modales con acciones de descarte siempre que sea posible, o proporcione otra acción de descarte explícita.
Título modal
El texto del cuerpo modal va aquí.
Demo en vivo
Alterne una demostración modal de trabajo haciendo clic en el botón a continuación. Se deslizará hacia abajo y se desvanecerá desde la parte superior de la página.
Modal title
Woohoo, you're reading this text in a modal!
Desplazamiento de contenido largo
Cuando los modales se vuelven demasiado largos para la ventana gráfica o el dispositivo del usuario, se desplazan independientemente de la página misma. Pruebe la demostración a continuación para ver a qué nos referimos.
Modal title
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
También puede crear un modal desplazable que permita desplazar el cuerpo modal agregando .modal-dialog-scrollablea .modal-dialog.
Modal title
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Centrado verticalmente
Añadir .modal-dialog-centereda .modal-dialogpara centrar verticalmente el modal.
Modal title
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Modal title
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
Información sobre herramientas y ventanas emergentes
La información sobre herramientas y las ventanas emergentes se pueden colocar dentro de los modales según sea necesario. Cuando los modales están cerrados, cualquier información sobre herramientas y ventanas emergentes también se descartan automáticamente.
Utilice el sistema de cuadrícula Bootstrap dentro de un modal anidando .container-fluiddentro del archivo .modal-body. Luego, use las clases normales del sistema de cuadrícula como lo haría en cualquier otro lugar.
Grids in modals
.col-md-4
.col-md-4 .ml-auto
.col-md-3 .ml-auto
.col-md-2 .ml-auto
.col-md-6 .ml-auto
Level 1: .col-sm-9
Level 2: .col-8 .col-sm-6
Level 2: .col-4 .col-sm-6
Contenido modal variable
¿Tiene un montón de botones que activan el mismo modal con contenidos ligeramente diferentes? Use event.relatedTargetlos atributos HTMLdata-* (posiblemente a través de jQuery ) para variar el contenido del modal según el botón en el que se hizo clic.
A continuación se muestra una demostración en vivo seguida de un ejemplo de HTML y JavaScript. Para obtener más información, lea los documentos de eventos modales para obtener detalles sobre relatedTarget.
New message
Cambiar animación
La $modal-fade-transformvariable determina el estado de transformación .modal-dialogantes de la animación de fundido de entrada modal, la $modal-show-transformvariable determina la transformación de .modal-dialogal final de la animación de fundido de entrada modal.
Si desea, por ejemplo, una animación de acercamiento, puede configurar $modal-fade-transform: scale(.8).
Eliminar animación
Para los modales que simplemente aparecen en lugar de aparecer gradualmente, elimine la .fadeclase de su marcado modal.
Alturas dinámicas
Si la altura de un modal cambia mientras está abierto, debe llamar $('#myModal').modal('handleUpdate')para reajustar la posición del modal en caso de que aparezca una barra de desplazamiento.
Accesibilidad
Asegúrese de agregar role="dialog"y aria-labelledby="...", haciendo referencia al título modal, a .modal, y role="document"al .modal-dialogmismo. Además, puede dar una descripción de su diálogo modal con aria-describedbyon .modal.
Incrustación de videos de YouTube
Incrustar videos de YouTube en modales requiere JavaScript adicional que no está en Bootstrap para detener automáticamente la reproducción y más. Consulte esta útil publicación de desbordamiento de pila para obtener más información.
Tamaños opcionales
Los modales tienen tres tamaños opcionales, disponibles a través de clases de modificadores para colocar en un archivo .modal-dialog. Estos tamaños se activan en ciertos puntos de interrupción para evitar las barras de desplazamiento horizontales en ventanas de visualización más estrechas.
Tamaño
Clase
Ancho máximo modal
Pequeña
.modal-sm
300px
Defecto
Ninguna
500px
Largo
.modal-lg
800px
Extra grande
.modal-xl
1140px
Nuestro modal predeterminado sin clase de modificador constituye el modal de tamaño "mediano".
Extra large modal
...
Large modal
...
Small modal
...
Uso
El complemento modal alterna su contenido oculto a pedido, a través de atributos de datos o JavaScript. También se agrega .modal-openpara <body>anular el comportamiento de desplazamiento predeterminado y genera un .modal-backdroppara proporcionar un área de clic para descartar los modales mostrados al hacer clic fuera del modal.
A través de atributos de datos
Activa un modal sin escribir JavaScript. Establézcalo data-toggle="modal"en un elemento del controlador, como un botón, junto con data-target="#foo"o href="#foo"para apuntar a un modal específico para alternar.
A través de JavaScript
Llame a un modal con id myModalcon una sola línea de JavaScript:
Opciones
Las opciones se pueden pasar a través de atributos de datos o JavaScript. Para los atributos de datos, agregue el nombre de la opción a data-, como en data-backdrop="".
Nombre
Escribe
Defecto
Descripción
fondo
booleano o la cadena'static'
verdadero
Incluye un elemento de fondo modal. Alternativamente, especifique staticun fondo que no cierre el modal al hacer clic.
teclado
booleano
verdadero
Cierra el modal cuando se presiona la tecla escape
enfoque
booleano
verdadero
Pone el foco en el modal cuando se inicializa.
mostrar
booleano
verdadero
Muestra el modal cuando se inicializa.
Métodos
Transiciones y métodos asíncronos
Todos los métodos de API son asíncronos e inician una transición . Vuelven a la persona que llama tan pronto como se inicia la transición, pero antes de que finalice . Además, se ignorará una llamada de método en un componente en transición .
Activa tu contenido como modal. Acepta opciones opcionales object.
.modal('toggle')
Cambia manualmente un modal. Vuelve a la persona que llama antes de que se haya mostrado u ocultado el modal (es decir, antes de que ocurra el evento shown.bs.modalo ).hidden.bs.modal
.modal('show')
Abre manualmente un modal. Vuelve a la persona que llama antes de que se haya mostrado realmente el modal (es decir, antes de shown.bs.modalque ocurra el evento).
.modal('hide')
Oculta manualmente un modal. Vuelve a la persona que llama antes de que se haya ocultado realmente el modal (es decir, antes de hidden.bs.modalque ocurra el evento).
.modal('handleUpdate')
Reajuste manualmente la posición del modal si la altura de un modal cambia mientras está abierto (es decir, en caso de que aparezca una barra de desplazamiento).
.modal('dispose')
Destruye el modal de un elemento.
Eventos
La clase modal de Bootstrap expone algunos eventos para conectarse a la funcionalidad modal. Todos los eventos modales se activan en el propio modal (es decir, en el <div class="modal">).
Tipo de evento
Descripción
mostrar.bs.modal
Este evento se activa inmediatamente cuando showse llama al método de instancia. Si es causado por un clic, el elemento en el que se hizo clic está disponible como relatedTargetpropiedad del evento.
mostrado.bs.modal
Este evento se activa cuando el modal se ha hecho visible para el usuario (esperará a que se completen las transiciones de CSS). Si es causado por un clic, el elemento en el que se hizo clic está disponible como relatedTargetpropiedad del evento.
ocultar.bs.modal
Este evento se activa inmediatamente cuando hidese llama al método de instancia.
oculto.bs.modal
Este evento se activa cuando el modal ha terminado de ocultarse para el usuario (esperará a que se completen las transiciones de CSS).