Me gustaría centrar mi modal en la ventana gráfica (centro) Intenté agregar algunas propiedades css
.modal { position: fixed; top:50%; left:50%; }
Estoy usando este ejemplo http://jsfiddle.net/rniemeyer/Wjjnd/
Lo intenté
$("#MyModal").modal('show').css(
{
'margin-top': function () {
return -($(this).height() / 2);
},
'margin-left': function () {
return -($(this).width() / 2);
}
})
javascript
twitter-bootstrap
bootstrap-modal
usuario2613813
fuente
fuente
.modal.fade.in
tambiéntranslateY(-50%)
que hace que la parte superior del modal sea inaccesible cuando el contenido modal es más alto que la altura del dispositivo).Respuestas:
Esto hace el trabajo: http://jsfiddle.net/sRmLV/1140/
Utiliza un helper-div y algunos css personalizados. No se requiere javascript ni jQuery.
HTML (basado en el código de demostración de Bootstrap )
CSS
fuente
Debido a que la respuesta de gpcola no funcionó para mí, edité un poco para que funcione ahora. Usé "margin-top" en lugar de transform. Además, uso el evento "show" en lugar de "show" porque después me dio un salto muy malo de posicionamiento (visible cuando tienes animaciones de arranque). Asegúrese de configurar la pantalla para "bloquear" antes de posicionar, de lo contrario $ dialog.height () será 0 y el modal no estará completamente centrado.
fuente
$('.modal:visible').each(centerModal);
if(offset < 0) offset = 0;
¡Estoy pegando todo el bloque en un caso de respuesta que no está claro!Esto es lo que hice para mi aplicación. Si observa las siguientes clases en el archivo bootstrap.css .modal-dialog tiene un relleno predeterminado de 10px y pantalla @media y (min-width: 768px) .modal-dialog tiene un relleno superior establecido en 30px. Entonces, en mi archivo css personalizado, configuré mi relleno superior en un 15% para todas las pantallas sin especificar un ancho de pantalla multimedia. Espero que esto ayude.
fuente
.modal-dialog.modal-sm { padding-top:15%; }
La mejor manera que encontré para todos los navegadores HTML5:
fuente
align-items: center;
abody.modal-open .modal
parece funcionar.// Estilos
fuente
El parámetro superior se anula en .modal.fade.in para forzar el valor establecido en su declaración personalizada, agregue la
!important
palabra clave después de top. Esto obliga al navegador a usar ese valor e ignorar cualquier otro valor para la palabra clave. Esto tiene el inconveniente de que no puede anular el valor en ningún otro lugar.fuente
A partir de Bootstrap 4, se agregó la siguiente clase para lograr esto sin JavaScript.
Puedes encontrar su documentación aquí .
Gracias vd por señalar que necesita agregar .modal-dialog-centrado a .modal-dialog para centrar verticalmente el modal.
fuente
esto funciona para mí perfectamente:
URL de demostración completa : https://codepen.io/dimbslmh/full/mKfCc
fuente
puedes usar:
para centrarlo tanto vertical como horizontalmente.
fuente
Porque la mayor parte de la respuesta aquí no funcionó, o solo funcionó parcialmente:
Debe usar el selector [estilo] para aplicar solo el estilo en el modal que está actualmente activo en lugar de todos los modales.
.in
hubiera sido genial, pero parece que se agrega solo después de que se completa la transición, que es demasiado tarde y hace algunas transiciones realmente malas. Afortunadamente, parece que bootstrap siempre aplica un atributo de estilo en el modal tal como está comenzando a mostrarse, por lo que esto es un poco extraño, pero funciona.La
:not([style='display: none;'])
parte es una solución alternativa para arrancar, no eliminar correctamente el atributo de estilo y, en cambio, establecer la visualización de estilo en ninguno cuando cierra el cuadro de diálogo.fuente
Puede lograr un centro de alineación vertical en Bootstrap 3 modal así:
y agregue esta clase css al contenedor "modal-dialog"
Ejemplo de trabajo de jsFiddle: http://jsfiddle.net/U4NRx/
fuente
¡La forma más limpia y sencilla de hacer esto es usar Flexbox! Lo siguiente alineará verticalmente un modal Bootstrap 3 en el centro de la pantalla y es mucho más limpio y simple que todas las otras soluciones publicadas aquí:
NOTA: Si bien esta es la solución más simple, es posible que no funcione para todos debido al soporte del navegador: http://caniuse.com/#feat=flexbox
Parece que (por lo general) IE se queda atrás. En mi caso, todos los productos que desarrollo para mí o para mis clientes son IE10 +. (No tiene sentido desde el punto de vista comercial invertir tiempo de desarrollo en versiones anteriores de IE cuando podría usarse para desarrollar realmente el producto y sacar el MVP más rápido). Esto ciertamente no es un lujo que todos tienen.
He visto sitios más grandes detectar si se admite o no flexbox y aplicar una clase al cuerpo de la página, pero ese nivel de ingeniería de front-end es bastante robusto, y aún necesitaría un respaldo.
Animaría a las personas a adoptar el futuro de la web. Flexbox es increíble y deberías comenzar a usarlo si puedes.
PD: este sitio realmente me ayudó a comprender flexbox como un todo y aplicarlo a cualquier caso de uso: http://flexboxfroggy.com/
EDITAR: en el caso de dos modales en una página, esto debería aplicarse a .modal.in
fuente
Ventajas:
display:table-cell
(eso no es para diseños)markup
SCSS
para aquellos que usangulp
ogrunt
Mostrar fragmento de código
Nota : Tengo la intención de mantener esta respuesta actualizada con las últimas especificaciones de Bootstrap 3. Para una solución Bootstrap 4, vea esta respuesta (por ahora son más o menos iguales, pero con el tiempo pueden diferir). Si encuentra algún error o problema, avíseme y lo actualizaré. Gracias.
Limpio, sin prefijo
SCSS
(para usar congulp
/grunt
):fuente
Sin embargo, otra solución CSS. No funciona para ventanas emergentes que son más grandes que el puerto de vista.
En
.modal-dialog
clase, anula la posición a absoluto (de relativo) y centra el contenidoright:0, left: 0
Al
.modal.fade .modal-dialog , .modal.in .modal-dialog
configurar la animación de transición entop
lugar de traducir.margin-top
mueve la ventana emergente ligeramente por debajo del centro en caso de una ventana emergente pequeña y en caso de ventanas emergentes largas, el modal está atascado con el encabezado. Por lo tantomargin-top:0, margin-bottom:0
Necesito refinarlo aún más.
fuente
Para aquellos que usan bootstrap angular-ui, pueden agregar las siguientes clases según la información anterior:
Nota: No se necesitan otros cambios y resolverá todos los modales.
fuente
No es necesario para nosotros javascript. Boostrap modal agrega clase .in cuando aparece. Simplemente modifique esta combinación de clase con modalclassName.fade.in con flex css y ya está.
agregue este CSS para centrar su modal vertical y horizontalmente.
fuente
Mi elección, solo un poco de CSS: (NO funciona en IE8)
Puedes jugar con la primera regla para cambiar cómo aparece el modal.
Usando: Bootstrap 3.3.4
fuente
Simplemente agregue el siguiente CSS a su existente, funciona bien para mí
fuente
Basado en la respuesta de Arany , pero también contabilizando el desplazamiento de la página.
fuente
Creo que esta es una solución CSS pura un poco más limpia que la solución de Rens de Nobel. Además, esto no impide cerrar el diálogo haciendo clic fuera de él.
http://plnkr.co/edit/JCGVZQ?p=preview
Simplemente agregue alguna clase de CSS al contenedor DIV con la clase .modal-dialog para obtener una mayor especificidad que el CSS de bootstraps, por ejemplo, centrado.
HTML
Y haga que este contenedor .modal-dialog.centered esté fijo y posicionado correctamente.
CSS
O incluso más simple usando flexbox.
CSS
fuente
fuente
Esto funciona en BS3, no probado en v2. Centra el modal verticalmente. Tenga en cuenta que hará la transición allí; si desea que solo aparezca en la posición, edite la
transition
propiedad CSS para.modal-dialog
fuente
fuente
Esto toma la respuesta de Arany y lo hace funcionar si el modal es más alto que la altura de la pantalla:
fuente
Para agregar centrado modal vertical a bootstrap modal.js, agregué esto al final de la
Modal.prototype.show
función:fuente
Para hacer que el modo Modal verifique el cuadro de diálogo Alinear todo medio.
/* Nota:
1.Aunque no necesite asignar un selector, encontrará todos los modales del documento y lo hará verticalmente en el medio
2.Para evitar el medio, un modo específico para ser el centro puede usar: no selector en el evento de clic
* /
Desde Milan Pandya
fuente
Use este script simple que centra los modales.
Si lo desea, puede establecer una clase personalizada (por ejemplo: .modal.modal-vcenter en lugar de .modal) para limitar la funcionalidad solo a algunos modales.
Agregue también esta corrección CSS para el espacio horizontal del modal; mostramos el pergamino en los modales, Bootstrap oculta automáticamente los pergaminos del cuerpo:
fuente
Otra respuesta de CSS a esta pregunta ...
Esta solución usa CSS solo para lograr el efecto deseado mientras mantiene la capacidad de cerrar el modal haciendo clic fuera de él. También le permite establecer
.modal-content
máximos de alto y ancho para que su ventana emergente no crezca más allá de la ventana gráfica. Un desplazamiento aparecerá automáticamente cuando el contenido crezca más allá del tamaño modal.nota: se debe omitir el
Bootstrap recomendado
.modal-dialog
div
para que esto funcione correctamente (no parece romper nada). Probado en Chrome 51 e IE 11.Código CSS:
EDITAR: La
.modal-dialog
clase le permite elegir si un usuario puede o no cerrar el modal haciendo clic fuera del modal. La mayoría de los modales tienen un botón explícito de 'cerrar' o 'cancelar'. Tenga esto en cuenta cuando use esta solución alternativa.fuente
La mejor solución para centralizar su modal con ancho y alto es, en css add y en modal, agregue esta 'centralizar' como clase.
fuente
Centrado verticalmente Agregue .modal-dialog-centrado a .modal-dialog para centrar verticalmente el modal
Iniciar demo modal
fuente