DESACTIVAR el desplazamiento horizontal [cerrado]


180

Ok, por alguna razón, mi página web se desplaza de izquierda a derecha y muestra mucho espacio feo.

He buscado por los resultados, sino que acaba de hacer la barra de desplazamiento HIDDEN

Eso es ahora lo que quiero, quiero DESACTIVAR físicamente la función de desplazamiento horizontal. ¡No quiero que el usuario pueda desplazarse de izquierda a derecha en mi página solo de arriba a abajo!

Lo intenté: overflow-x:hiddenen CSS en mi htmletiqueta, pero solo ocultó la barra de desplazamiento y no desactivó el desplazamiento.

¡Por favor, ayúdame!

Aquí hay un enlace a la página: http://www.green-panda.com/usd309bands/ (Enlace roto)

Esto podría darle una mejor idea de lo que estoy hablando:

Esto es cuando se cargan las primeras páginas:

ingrese la descripción de la imagen aquí

Y esto es después de desplazarme hacia la derecha:

ingrese la descripción de la imagen aquí


1
¿Cómo puede desplazarse horizontalmente si no hay una barra de desplazamiento horizontal?
Roddy of the Frozen Peas

9
Dos dedos del mouse van de izquierda a derecha en una computadora portátil.
user2371301

1
Por curiosidad, ¿qué en su página crea una barra de desplazamiento predeterminada?
Troyano

44
¿Cómo desplazarse sin una barra de desplazamiento? Haga clic con el botón central en Windows.
Nayuki

debe haber un bloque que tendrá un relleno adicional, es decir, extender la eliminación del ancho del 100% que sería una buena práctica
erupción el

Respuestas:


494

Intenta agregar esto a tu CSS

html, body {
    max-width: 100%;
    overflow-x: hidden;
}

55
Eso funcionó muy bien. ¡Me alegro de haber encontrado a alguien que entendió lo que estaba diciendo! Aceptaré tan pronto como pueda.
user2371301

44
En Chrome 34, esto realmente no impide el desplazamiento. Oculta la barra de desplazamiento, pero con el desplazamiento del botón central todavía puedo ver los elementos ocultos a la izquierda.
gphilip

2
Esto no funciona cuando minimiza la ventana del navegador a su capacidad más
delgada

44
: - / Causó desplazamiento táctil / impulso para dejar de funcionar en iPhone
MarkWPiper

2
¡¡te amo amigo!!
rochasdv

13

este es el hijo desagradable de tu código :)

.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container {
width: 1170px;
}

reemplazarlo con

.container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container {
width: 100%;
}

13

Entonces, para solucionar esto correctamente, hice lo que otros hicieron aquí y usé CSS para ocultar la barra de herramientas horizontal:

.name {
  max-width: 100%;
  overflow-x: hidden;
}

Luego, en js, creé un detector de eventos para buscar el desplazamiento y contrarresté los intentos de desplazamiento horizontal de los usuarios.

var scrollEventHandler = function()
{
  window.scroll(0, window.pageYOffset)
}

window.addEventListener("scroll", scrollEventHandler, false);

Vi a alguien hacer algo similar, pero aparentemente eso no funcionó. Sin embargo, esto funciona perfectamente bien para mí.


Esto funciona para mi; sin embargo, hay una inquietud en el móvil al deslizar; mientras el movimiento se ralentiza.
Difícilmente visible el

"correctamente" No del todo, pero sigue siendo una respuesta buena y creativa.
Feathercrown

9

Sé que es demasiado tarde , pero hay un enfoque en javascript que puede ayudarlo a detectar que el elemento html de brujas está causando el desbordamiento horizontal -> aparece la barra de desplazamiento

Aquí hay un enlace a la publicación sobre Trucos CSS

var docWidth = document.documentElement.offsetWidth;
[].forEach.call(
  document.querySelectorAll('*'),
  function(el) {
    if (el.offsetWidth > docWidth) {
      console.log(el);
    }
  }
);

Podría devolver algo como esto:

<div class="div-with-extra-width">...</div>

entonces simplemente eliminas el ancho extra divdemax-width:100%

¡Espero que esto ayude!

Me solucionó el problema:]


Como nota del sitio, boundingClientRect es más preciso que offsetWidth: - developer.mozilla.org/en-US/docs/Web/API/Element/… - stackoverflow.com/questions/43537559/…
The Fool

protector de la vida absoluta!
Colas

8

Pruebe este para deshabilitar el desplazamiento de ancho solo para el cuerpo, todo el documento solo es cuerpo body{overflow-x: hidden;}


5

koala_dev respondió que esto funcionará:

html, body {
   max-width: 100%;
   overflow-x: hidden;
}

Y MarkWPiper comenta que ": - / Causó desplazamiento táctil / impulso para dejar de funcionar en iPhone"

La solución para mantener el contacto / impulso en iPhone es agregar esta línea dentro del bloque css para html, body:

    height:auto!important;

donde ponerlo bajo etiqueta de cuerpo o una consulta de medios para pantallas pequeñas?
Umair

1
@Umair gracias - comentario editado para aclarar que la altura: la línea automática va en el bloque html, body css.
ffffff

Muchas gracias por la altura: ¡solución automática!
Torben

2

La respuesta de Koala_dev funcionará, pero en caso de que se pregunte, esta es la razón por la que funciona:

.
q.html, body {              <--applying this css block to everything in the
                             html code.

q.max-width: 100%;          <--all items created must not exceed 100% of the 
                             users screen size. (no items can be off the page 
                             requiring scroll)

q.overflow-x: hidden;       <--anything that occurs off the X axis of the 
                             page is hidden, so that you wont see it going 
                             off the page.     

.


Gracias, me encantó la educación.
Pimp Trizkit

2

Si desea desactivar el desplazamiento horizontal en todo el ancho de la pantalla, use este código.

element {
  max-width: 100vw;
  overflow-x: hidden;
}

Esto funciona mejor que "100%" porque ignora el ancho principal y en su lugar usa la ventana gráfica.


2

Puede probar todo este método en nuestra página html.

1er camino

body { overflow-x:hidden; }

2da forma Puede usar lo siguiente en su etiqueta de cuerpo CSS:

overflow-y: scroll; overflow-x: hidden;

Eso eliminará tu barra de desplazamiento.

3er camino

body { min-width: 1167px; }

5ta forma

html, body { max-width: 100%; overflow-x: hidden; }

6ta forma

element { max-width: 100vw; overflow-x: hidden; }

4ta forma ..

var docWidth = document.documentElement.offsetWidth; [].forEach.call( document.querySelectorAll('*'), function(el) { if (el.offsetWidth > docWidth) { console.log(el); } } );

Ahora estoy buscando más .. !!!!


1

Solo tuve que lidiar con eso yo mismo. Después de todo, encontré este método más fácil y útil. Solo agrega

overflow-x: hidden;

A tu padre externo. En mi caso se ve así:

<body style="overflow-x: hidden;">

Tienes que usar overflow-xporque si usas simplemente usas, overflowtambién deshabilitas el desplazamiento vertical, es deciroverflow-y

Si el desplazamiento vertical aún está deshabilitado, puede habilitarlo explícitamente con:

overflow-y: scroll;

Sé que de alguna manera no es una forma adecuada porque si todo se configurara bien, uno no tendría que usar este método rápido y sucio.


1
.name 
  { 
      max-width: 100%; 
       overflow-x: hidden; 
   }

Aplica el estilo anterior o puede crear una función en javaScript para resolver ese problema


0

Puede anular el evento de desplazamiento del cuerpo con JavaScript y restablecer el desplazamiento horizontal a 0.

function bindEvent(e, eventName, callback) {
    if(e.addEventListener) // new browsers
        e.addEventListener(eventName, callback, false);
    else if(e.attachEvent) // IE
        e.attachEvent('on'+ eventName, callback);
};

bindEvent(document.body, 'scroll', function(e) {
    document.body.scrollLeft = 0;
});

No recomiendo hacer esto porque limita la funcionalidad para usuarios con pantallas pequeñas.


2
Voy a probar esto, la solución CSS no funciona en mi proyecto, ugh, incluso esto no funciona :(
Leon Gaban

esto no funciona para mí
Souhail Ben Slimene
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.