Deshabilitar las barras de desplazamiento verticales y horizontales de los navegadores


117

¿Es posible deshabilitar las barras de desplazamiento verticales y horizontales de los navegadores usando jQuery o javascript?


Creo que en algunas situaciones, especialmente si desea alternar entre desplazamiento y sin desplazamiento, esta solución es más preferible: stackoverflow.com/questions/8701754/…
Yousef Salimpour

Puede encontrar una respuesta más completa a esta pregunta aquí stackoverflow.com/a/25561646/1922144
davidcondrey

Respuestas:


144

En caso de que necesite la posibilidad de ocultar y mostrar barras de desplazamiento dinámicamente, puede usar

$("body").css("overflow", "hidden");

y

$("body").css("overflow", "auto");

en algún lugar de su código.


4
El desbordamiento oculto no siempre funciona en IE. Vea la respuesta de AnthonyWJones a continuación.
Tiago Almeida

4
oveflow: hiddenno evitará nada en los teléfonos inteligentes.
dvlden

En cromo, esto desactiva la barra de desplazamiento sin ocultarlo (que todavía está ahí y sigue cambiando el tamaño de todo lo demás, pero ahora es de color gris)
taltamir

120
function reloadScrollBars() {
    document.documentElement.style.overflow = 'auto';  // firefox, chrome
    document.body.scroll = "yes"; // ie only
}

function unloadScrollBars() {
    document.documentElement.style.overflow = 'hidden';  // firefox, chrome
    document.body.scroll = "no"; // ie only
}

5
Dos votos a favor es notablemente poco por ser la única respuesta pura de JavaScript.
Fzs2

2
@HermannIngjaldsson: Ver que OP pidió una solución de JavaScript o jQuery y había aceptado una solución de jQuery hace 4 años, solo tiene sentido. No estoy diciendo que la respuesta no sea buena, solo digo lo obvio sobre los votos más bajos. +1 de mí de todos modos.
No.

esta es la única solución que funcionó para mí, ya que el desbordamiento oculto del cuerpo no ataca todo el documento, ¡esta es la solución correcta para este problema! muchas gracias, me ahorraste mucho tiempo!
Adnane.T

Esta es una solución brillante y merece un voto positivo. También resuelve el problema con CSS fijo, donde la página se desplazará hacia arriba.
haipham23

50

Prueba CSS

<body style="overflow: hidden">

15
Para compatibilidad con el navegador, agregaría este estilo a la etiqueta HTML también: html, body {overflow: hidden;}
Ady

32

Hasta ahora tenemos desbordamiento: oculto en el cuerpo. Sin embargo, IE no siempre respeta eso y debe poner scroll = "no" en el elemento del cuerpo y / o colocar overflow: hidden en el elemento html también.

Puede llevar esto más lejos cuando necesite 'tomar el control' del puerto de visualización, puede hacer esto: -

<style>
 body {width:100%; height:100%; overflow:hidden; margin:0; }
 html {width:100%; height:100%; overflow:hidden; }
</style>

Un elemento con una altura del 100% en el cuerpo tiene la altura completa de la ventana de visualización, y el elemento se coloca absolutamente usando bottom: nnPX se establecerá nn píxeles por encima del borde inferior de la ventana, etc.


2
¿No es el ',' debería ser ';', en el cuerpo css?
paynestrike

12

Prueba CSS.

Si desea eliminar Horizontal

overflow-x: hidden;

Y si quieres eliminar Vertical

overflow-y: hidden;

10

En las versiones modernas de IE (IE10 y superior), las barras de desplazamiento se pueden ocultar mediante la -ms-overflow-stylepropiedad .

html {
     -ms-overflow-style: none;
}

En Chrome, las barras de desplazamiento se pueden diseñar:

::-webkit-scrollbar {
    display: none;
}

Esto es muy útil si desea utilizar el desplazamiento corporal "predeterminado" en una aplicación web, que es considerablemente más rápido que overflow-y: scroll.


solo esto me ha funcionado de todas las respuestas :) ¡gracias!
Gediminas

9

En caso de que también necesite soporte para Internet Explorer 6, simplemente desborde el html

$("html").css("overflow", "hidden");

y

$("html").css("overflow", "auto");

5

IE tiene algún error con las barras de desplazamiento. Entonces, si desea alguno de los dos, debe incluir lo siguiente para ocultar la barra de desplazamiento horizontal:

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

y ocultar vertical:

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


4

(No puedo comentar todavía, pero quería compartir esto):

El código de Lyncee funcionó para mí en el navegador de escritorio. Sin embargo, en iPad (Chrome, iOS 9), bloqueó la aplicación. Para arreglarlo, cambié

document.documentElement.style.overflow = ...

a

document.body.style.overflow = ...

que resolvió mi problema.


2

Debido a que Firefox tiene una flecha atajo clave, es probable que desee poner un <div>torno con estilo CSS: overflow:hidden;.


2

Usando JQuery puede deshabilitar la barra de desplazamiento con este código:

$('body').on({
    'mousewheel': function(e) {
        if (e.target.id == 'el') return;
        e.preventDefault();
        e.stopPropagation();
     }
});

También puedes habilitarlo nuevamente con este código:

 $('body').unbind('mousewheel');
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.