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?
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.
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
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;
}
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>
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.
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é?
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;
}
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;
}
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;
}
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