Saltar al contenido

Evitar que BODY se desplace cuando se abre un modal

Solución:

Bootstrap’s modal agrega automáticamente la clase modal-open al cuerpo cuando se muestra un diálogo modal y lo elimina cuando el diálogo está oculto. Por lo tanto, puede agregar lo siguiente a su CSS:

body.modal-open {
    overflow: hidden;
}

Podría argumentar que el código anterior pertenece a la base de código CSS Bootstrap, pero esta es una solución fácil para agregarlo a su sitio.

Actualización 8 de febrero de 2013

Esto ahora ha dejado de funcionar en Twitter Bootstrap v. 2.3.0; ya no agregan el modal-open clase al cuerpo.

Una solución alternativa sería agregar la clase al cuerpo cuando el modal esté a punto de mostrarse y eliminarlo cuando se cierre el modal:

$("#myModal").on("show", function () {
  $("body").addClass("modal-open");
}).on("hidden", function () {
  $("body").removeClass("modal-open")
});

Actualización 11 de marzo de 2013
Parece el modal-open La clase regresará en Bootstrap 3.0, explícitamente con el propósito de prevenir el desplazamiento:

Reintroduce .modal-open en el cuerpo (para que podamos nuclear el pergamino allí)

Vea esto: https://github.com/twitter/bootstrap/pull/6342 – mire el Modal sección.

La respuesta aceptada no funciona en dispositivos móviles (iOS 7 con Safari 7, al menos) y no quiero que MOAR JavaScript se ejecute en mi sitio cuando CSS lo hará.

Este CSS evitará que la página de fondo se desplace bajo el modal:

body.modal-open {
    overflow: hidden;
    position: fixed;
}

Sin embargo, también tiene un ligero efecto secundario de esencialmente desplazarse hacia la parte superior. position:absolute resuelve esto, pero vuelve a introducir la capacidad de desplazarse en el móvil.

Si conoce su ventana gráfica (mi complemento para agregar ventana gráfica a la <body>) puede agregar un conmutador CSS para el position.

body.modal-open {
    // block scroll for mobile;
    // causes underlying page to jump to top;
    // prevents scrolling on all screens
    overflow: hidden;
    position: fixed;
}
body.viewport-lg {
    // block scroll for desktop;
    // will not jump to top;
    // will not prevent scroll on mobile
    position: absolute; 
}

También agrego esto para evitar que la página subyacente salte de izquierda a derecha al mostrar / ocultar modales.

body {
    // STOP MOVING AROUND!
    overflow-x: hidden;
    overflow-y: scroll !important;
}

esta respuesta es una publicación x.

Simplemente oculte el desbordamiento del cuerpo y hará que el cuerpo no se desplace. Cuando oculte el modal, conviértalo en automático.

Aquí está el código:

$('#adminModal').modal().on('shown', function(){
    $('body').css('overflow', 'hidden');
}).on('hidden', function(){
    $('body').css('overflow', 'auto');
})
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *