bootstrap modal elimina la barra de desplazamiento


Cuando disparo una vista modal en mi página, activa la barra de desplazamiento para que desaparezca. Es un efecto molesto porque la página de fondo comienza a moverse cuando el modal se mueve / desaparece. ¿Hay una cura para ese efecto?

Author: cvrebert, 2014-08-01

9 answers

Esta es una entidad, la clase modal-open se agrega al HTML body cuando muestra el modal, y se elimina cuando lo oculta.

Esto hace que la barra de desplazamiento desaparezca ya que el css de bootstrap dice

.modal-open {
    overflow: hidden;
}

Puede anular esto especificando

.modal-open {
    overflow: scroll;
}

En tu propio css.

 87
Author: flup,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-26 00:02:26

He utilizado

.modal-open {
  overflow-y: scroll;
}

En este caso se evita mostrar la barra de desplazamiento horizontal

 23
Author: Mauro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-10 09:41:32

Creo que inherites mejor que scroll porque cuando abres modal, siempre se abrirá con scroll, pero cuando no tienes ningún scroll obtendrás el mismo problema. Así que solo hago esto:

.modal-open {
  overflow: inherit;
}
 20
Author: Alisson Alvarenga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-07 13:33:27

Gracias a Dios que llegué a través de este post! Me estaba tirando del pelo tratando de averiguar cómo recuperar mis barras de desplazamiento al cerrar la ventana usando mi propio enlace cercano. Probé las sugerencias para CSS, pero simplemente no funcionaba correctamente. Después de leer

La clase modal-open se añade al cuerpo HTML cuando se muestra el modal, y se lo quitan cuando lo esconden. -- @flup

Se me ocurrió una solución usando jquery, por lo que en caso de que alguien más tenga el mismo problema y lo anterior sugerencias no funcionan -

<script>
            jQuery(document).ready(function () {
jQuery('.closeit').click(function () {
 jQuery('body').removeClass('modal-open');
                });
            });
        </script>
 7
Author: Rich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-10 15:30:46

Es mejor usar overflow-y:scroll y eliminar el relleno del cuerpo, el modal bootstrap agregó relleno al cuerpo de la página.

.modal-open {
  overflow:hidden;
  overflow-y:scroll;
  padding-right:0 !important;
}

IE browser Compatible, IE browser haciendo lo mismo por defecto.

 4
Author: Super Model,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-21 09:51:50

Estaba jugando con esta 'característica' de los modales de Bootstrap. Parece que la clase .modal tiene overflow-y:auto; Por lo que el contenedor modal obtiene su propia barra de desplazamiento cuando el modal en sí se convierte en alto.

Si siempre desea una barra de desplazamiento (los diseñadores a menudo lo hacen) Primero establece el cuerpo

body {
    overflow-y:scroll;
}

Luego manejar .modal-open

.modal-open .modal {
    overflow-y:scroll; /* Force a navbar on .modal */
}

.modal-open .topnavbar-wrapper {
    padding-right:17px; /* Noticed that right aligned navbar content got overlapped by the .modal scrollbar */
}

Deje la barra de desplazamiento deshabilitando el cuerpo intacto en este caso

Todas las demás respuestas en esta página siguieron haciendo saltar mi contenido.

Cabezas ¡arriba!

Aunque esta solución funcionó para mí todo el tiempo, ayer tuve un problema al usar esta solución cuando el modal es arrastrable y grande para adaptarse a la pantalla (verticalmente). Podría tener algo que ver con position:sticky elementos que agregué?

 3
Author: Brainfeeder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-26 10:04:14

Mejor si va a crear su propio css archivo para personalizar una cierta parte de su bootsrap.

No altere el archivo css de bootstrap porque cambiará todo en su bootstrap una vez que lo use en otras partes de su página.

Si su página es algo larga, automáticamente proporcionará una barra de desplazamiento. Y cuando se abra el modal, ocultará la barra de desplazamiento porque eso es lo que bootstrap hace por defecto.

Para evitar ocultarlo cuando se abre modal, solo anularlo poniendo el código css (abajo) en su propio archivo css.

.modal-open {
    overflow: scroll;
}

Solo viceversa...

.modal-open {
    overflow: hidden;
}
 1
Author: NormanCabilatazan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-04 02:25:25

El modal bootstrap agrega un relleno una vez que se abre para que pueda probar este código en su propio css

.modal-open {
    padding: 0 !important;
}
 0
Author: mehdigriche,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-21 11:06:11

Además, si la ventana emergente modal necesita desplazarse con el contenido dentro y el padre necesita permanecer quieto, agregue lo siguiente a su Personalizado.css (sobrescribiendo css)

.modal-body {
    max-height: calc(100vh - 210px);
    overflow-y: auto;
}
.modal-open {
    overflow: hidden;
    overflow-y: scroll;
    padding-right: 0 !important;
}
 0
Author: Oracular Man,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-13 00:58:15