Tengo un sitio web con DIV alineado al centro. Ahora, algunas páginas necesitan desplazarse, otras no. Cuando me muevo de un tipo a otro, la apariencia de una barra de desplazamiento mueve la página unos pocos píxeles hacia un lado. ¿Hay alguna forma de evitar esto sin mostrar explícitamente las barras de desplazamiento en cada página?
218
overflow-y: overlay
en este hilo?overflow-y: overlay
Respuestas:
overflow-y: scroll es correcto, pero debe usarlo con la etiqueta html, no body o de lo contrario obtendrá una barra de desplazamiento doble en IE 7
Entonces el CSS correcto sería:
fuente
Envuelva el contenido de su elemento desplazable en un div y aplique
padding-left: calc(100vw - 100%);
.El truco es que
100vw
representa el 100% de la ventana gráfica, incluida la barra de desplazamiento. Si resta100%
, que es el espacio disponible sin la barra de desplazamiento, terminará con el ancho de la barra de desplazamiento o0
si no está presente. Crear un relleno de ese ancho a la izquierda simulará una segunda barra de desplazamiento, desplazando el contenido centrado de nuevo a la derecha.Tenga en cuenta que esto solo funcionará si el elemento desplazable usa todo el ancho de la página, pero esto no debería ser un problema la mayor parte del tiempo porque solo hay algunos otros casos en los que ha centrado el contenido desplazable.
fuente
100vw
y100%
medí cosas diferentes, ¡así que aprendí algo útil de esto!@media screen and (min-width: 800px) {...}
. En los casos en que el contenido se ajuste al ancho de la página. Por ejemplo, en resoluciones pequeñas, habrá una brecha innecesaria, desplazando el contenido a la derechaYo creo que no. Pero el estilo
body
conoverflow: scroll
debería hacerlo. Aunque pareces saber eso.fuente
overflow-y: scroll
:)Con el desplazamiento siempre mostrado, quizás no sea bueno para el diseño.
Intenta limitar el ancho del cuerpo con css3
vw
es el ancho de la ventana gráfica (vea este enlace para obtener una explicación)calc
calcular en css334px
significa ancho de barra de desplazamiento doble (vea esto para fijo o esto para calcular si no confía en tamaños fijos)fuente
padding-left: 34px;
para centrar uniformemente mi página.Ejemplo . Haga clic en el botón "Cambiar altura mínima".
Con
calc(100vw - 100%)
podemos calcular el ancho de la barra de desplazamiento (y si no se muestra, será 0). Idea: usando el margen negativo a la derecha, podemos aumentar el ancho de<html>
este ancho. Verá una barra de desplazamiento horizontal; debe ocultarse usandooverflow-x: hidden
.fuente
calc(100% - 100vw)
lugar de multiplicar por-1
?No sé si esta es una publicación anterior, pero tuve el mismo problema y si quieres desplazarte verticalmente solo debes intentarlo
overflow-y:scroll
fuente
Si cambia el tamaño o después de cargar algunos datos, está agregando la barra de desplazamiento, puede intentar lo siguiente, crear una clase y aplicar esta clase.
fuente
He resuelto el problema en uno de mis sitios web estableciendo explícitamente el ancho del cuerpo en javascript por el tamaño de la vista menos el ancho de la barra de desplazamiento. Utilizo una función basada en jQuery documentada aquí para determinar el ancho de la barra de desplazamiento.
fuente
Ampliando la respuesta usando esto:
Un comentarista sugirió agregar también el relleno izquierdo para mantener el centrado:
Pero las cosas no parecen correctas si su contenido es más ancho que la ventana gráfica. Para solucionarlo, puede usar consultas de medios, como esta:
Donde el 1058px = ancho de contenido + 17 * 2
Esto permite que una barra de desplazamiento horizontal maneje el desbordamiento xy mantenga centrado el contenido centrado cuando la ventana gráfica es lo suficientemente amplia como para contener su contenido de ancho fijo
fuente
Extendiéndose a partir de la respuesta de Rapti , esto debería funcionar igual de bien, pero agrega más margen al lado derecho del
body
y lo oculta conhtml
margen negativo , en lugar de agregar relleno adicional que podría afectar el diseño de la página. De esta manera, no se cambia nada en la página real (en la mayoría de los casos) y el código sigue siendo funcional.fuente
overflow-x: hidden
y eso lo arregló.La solución de @ kashesandr funcionó para mí, pero para ocultar la barra de desplazamiento horizontal agregué un estilo más para el cuerpo. Aquí está la solución completa:
CSS
JS
Solución JS Only (cuando el segundo modal se abrió desde el primer modal):
fuente
Traté de solucionar el probable problema al que se
.modal-open
aplicaba la clase bootstrap de Twitterbody
. La soluciónhtml {overflow-y: scroll}
no ayuda. Una posible solución que encontré es agregar{width: 100%; width: 100vw}
alhtml
elemento.fuente
html { width: 100vw; }
trabajado para míSolía tener ese problema, pero la forma más simple de solucionarlo es esto (esto funciona para mí):
en el tipo de archivo CSS:
así de simple! :)
fuente
Las soluciones publicadas usando calc (100vw - 100%) están en el camino correcto, pero hay un problema con esto: siempre tendrá un margen a la izquierda del tamaño de la barra de desplazamiento, incluso si cambia el tamaño de la ventana para que el el contenido llena toda la ventana gráfica.
Si intenta evitar esto con una consulta de medios, tendrá un momento de ajuste incómodo porque el margen no se reducirá progresivamente a medida que cambie el tamaño de la ventana.
Aquí hay una solución que evita eso y AFAIK no tiene inconvenientes:
En lugar de usar margin: auto para centrar su contenido, use esto:
Reemplace 500 px con la mitad del ancho máximo de su contenido (en este ejemplo, el ancho máximo del contenido es 1000 px). El contenido ahora permanecerá centrado y el margen disminuirá progresivamente hasta que el contenido llene la ventana gráfica.
Para evitar que el margen se vuelva negativo cuando la ventana gráfica es más pequeña que el ancho máximo, simplemente agregue una consulta de medios como esta:
Et voilà!
fuente
Si el ancho de la tabla no cambia, puede establecer el ancho del elemento (como tbody) que contiene la barra de desplazamiento> 100% (permitiendo espacio adicional para la barra de desplazamiento) y establecer overflow-y en "overlay" (por lo tanto que la barra de desplazamiento permanece fija y no desplazará la tabla hacia la izquierda cuando aparezca). Establezca también una altura fija para el elemento con la barra de desplazamiento, de modo que la barra de desplazamiento aparecerá una vez que se exceda la altura. Al igual que:
Nota: tendrá que ajustar manualmente el% de ancho ya que el% de espacio que ocupa la barra de desplazamiento será relativo al ancho de su tabla (es decir: ancho de tabla más pequeño, se requiere más% para ajustarse a la barra de desplazamiento, ya que su tamaño en píxeles es constante )
Un ejemplo de tabla dinámica:
fuente
Simplemente establecer el ancho de su elemento contenedor de esta manera hará el truco
Esto hará que ese elemento ignore la barra de desplazamiento y funcione con imágenes o color de fondo.
fuente
Utilicé un poco de jquery para resolver esto
fuente
fuente
Contrariamente a la respuesta aceptada que sugiere una barra de desplazamiento permanente en la ventana del navegador, incluso si el contenido no desborda la pantalla , preferiría usar:
Esto se debe a que la apariencia de la barra de desplazamiento tiene más sentido si el contenido se desborda .
Esto tiene más sentido que esto .
fuente