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í

usuario2371301
fuente
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;
}
koala_dev
fuente
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%;
}
Abdul Malik
fuente
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í.

Dylan Cope
fuente
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:]

Mools Por cierto
fuente
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;}

easa
fuente
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;
ffffff
fuente
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.     

.

SchadeM
fuente
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.

Fabian von Ellerts
fuente
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 .. !!!!

Srikrushna
fuente
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.

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

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

rushikeshmore
fuente
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.

Austin Brunkhorst
fuente
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