¿Cómo ocultar la barra de desplazamiento en Firefox?


81

Acabo de descubrir cómo ocultar la barra de desplazamiento en Google Chrome, lo hice con este código:

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

El único problema es que esto no funciona en Firefox. Intenté muchas formas de hacerlo, pero aún así no funciona.


2
no parece una buena idea hacerlo de esa manera. use css overflow oculto en html, body y use un div contenedor con 100% de altura y ancho.
Abhitalks

Esto puede ser demasiado obvio, pero ¿has probado -moz- para Firefox? Sin embargo, estoy de acuerdo con los abhitalks, esta no parece una buena manera de hacerlo.
Myles


Respuestas:


114

Puedes usar la scrollbar-widthregla. Puede scrollbar-width: none;ocultar la barra de desplazamiento en Firefox y aún poder desplazarse libremente.

body {
   scrollbar-width: none;
}

Tiene un error tipográfico, pero esta debería ser la solución aceptada.
shirajg

7
Esto funciona en el navegador más reciente, pero tenga en cuenta que todavía es una función experimental . Además, tenga en cuenta que esta propiedad debe usarse con el elemento que produce la barra de desplazamiento. Por ejemplo, si está utilizando Angular Material md-content, el cuerpo no produce la barra de desplazamiento, sino el md-contentelemento. Por lo tanto, body { scrollbar-width: none; }no funcionará, pero md-content { scrollbar-width:none; }sí.
Sajib Acharya

Gracias hermano, me has ahorrado mucho tiempo !!
Juan

23

Para ocultar la barra de desplazamiento en Chrome, Firefox e IE, puede usar esto:

.hide-scrollbar
{
    overflow: auto;
    -ms-overflow-style: none; /* IE 11 */
    scrollbar-width: none; /* Firefox 64 */
}

20

Pude ocultar la barra de desplazamiento pero aún puedo desplazarme con la rueda del mouse con esta solución:

html {overflow: -moz-scrollbars-none;}

Descarga el complemento https://github.com/brandonaaron/jquery-mousewheel e incluye esta función:

jQuery('html,body').bind('mousewheel', function(event) {
    event.preventDefault();
    var scrollTop = this.scrollTop;
    this.scrollTop = (scrollTop + ((event.deltaY * event.deltaFactor) * -1));
    //console.log(event.deltaY, event.deltaFactor, event.originalEvent.deltaMode, event.originalEvent.wheelDelta);
  });

13
Esto parece ser equivalente a "overflow: hidden;" y no permite el desplazamiento :-(
bob

Me funciona: la barra de desplazamiento horizontal ahora está oculta en Firefox. ¡Gracias!
Liran H

4
A partir de Firefox 63, esto sólo funciona si se establece layout.css.overflow.moz-scrollbars.enabledque trueen la configuración de las funciones de Firefox, por lo que es inadecuado para su uso en producción. developer.mozilla.org/en-US/docs/Web/CSS/overflow#Deprecated
Josh

Sin embargo, eso no funcionó para mí al poner scrollbar-width: none; dentro de html lo hizo.
Slodeveloper

8

Esto es lo que necesitaba para deshabilitar las barras de desplazamiento mientras conservaba el desplazamiento en Firefox, Chrome y Edge en:

          @-moz-document url-prefix() { /* Disable scrollbar Firefox */
            html{
              scrollbar-width: none;
            }
          }
          body {
            margin: 0; /* remove default margin */
            scrollbar-width: none; /* Also needed to disable scrollbar Firefox */
            -ms-overflow-style: none;  /* Disable scrollbar IE 10+ */
            overflow-y: scroll;
          }
          body::-webkit-scrollbar {
            width: 0px;
            background: transparent; /* Disable scrollbar Chrome/Safari/Webkit */
          }

5

Para webkit use lo siguiente:

::-webkit-scrollbar {
    width: 0px;  /* remove scrollbar space */
    background: transparent;  /* optional: just make scrollbar invisible */
}

Para Mozilla Firefox, use el siguiente código:

@-moz-document url-prefix() {
    html,body{overflow: hidden !important;}
}

y si el desplazamiento no funciona, agregue

element {overflow-y: scroll;}

al elemento específico


4

Esta es una solución genérica:

<div class="outer">
 <div class="inner">
    Some content...
 </div>
</div>

<style>
 .outer {
 overflow: hidden;
}
 .inner {
 margin-right: -16px;
 overflow-y: scroll;
 overflow-x: hidden;
}
</style>

La barra de desplazamiento está oculta por el div padre.

Esto requiere que use overflow: hidden en el div principal.


3
Funciona, pero no es confiable ya que 16px es solo un ancho asumido de la barra de desplazamiento.
igorpavlov

46
dé crédito al autor real @chowey cuando copie. stackoverflow.com/questions/15394065/…
Rexhin Hoxha

No funciona en FF 56 cuando el contenido div interno es más largo que el ancho de la pantalla
Mr Jedi

3
Esta solución está resolviendo el problema de FF pero tiene peores efectos secundarios en otros navegadores (cortando el texto)
Kosmonaft

Puedo verme fácilmente usando eso en todos los divs que requieren desplazarse sobre mi aplicación ...
Philippe

3

Para la versión más reciente de Firefox, las soluciones antiguas ya no funcionan, pero utilicé con éxito en v66.0.3 la scrollbar-colorpropiedad que puede configurar transparent transparenty que hará que la barra de desplazamiento en Firefox en el escritorio sea al menos invisible (todavía tiene lugar en la ventana gráfica y el móvil no funcionan, pero allí la barra de desplazamiento es una línea fina que se coloca sobre el contenido a la derecha).

overflow-y: auto; //or hidden if you don't want horizontal scrolling
overflow-y: auto;
scrollbar-color: transparent transparent;

¿Cómo se hace en FF70 +? scrollbar-width: none;ya no funciona. Necesito ocultar la barra de desplazamiento, no hacerla transparente.
gen b.


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

No funcionará en Firefox, ya que Firefox abandonó el soporte para barras de desplazamiento ocultas con funcionalidad (puede usar overflow: -moz-scrollbars-none;en versiones antiguas).


0

Intente usar esto:

overflow-y: -moz-hidden-unscrollable;


2
Se oculta scrollbarpero detiene la acción de desplazamiento. cuál es la diferencia entre overflow-y: -moz-hidden-unscrollable;y overflow: hidden. En realidad nada, así que no es la respuesta correcta. pero te doy un voto a favor. Gracias.
AmerllicA

2
la diferencia es que el primero lo oculta solo en firefox
peeter

Te voté pero es tan extraño para mí por qué lo eres -2. su respuesta es correcta
AmerllicA

La pregunta es cómo ocultar las barras de desplazamiento pero aún así permitir que el usuario se desplace si es necesario cuando el contenido se desborda, no para deshabilitar completamente el desplazamiento. la razón de esto es que las barras de desplazamiento de FF son feas y, a veces, aparecen incluso si el contenido no se desborda. Todos los demás navegadores ofrecen una solución css simple y elegante para eso, debo decir, ¡incluso IE!
Philippe

0

En algunos casos particulares (el elemento está en el extremo derecho de la pantalla o su desbordamiento principal está oculto), esta puede ser una solución:

@-moz-document url-prefix() {
  .element {
    margin-right: -15px;
  }
}

0

Intenté todo y lo que funcionó mejor para mi solución fue mostrar siempre la barra de desplazamiento vertical y luego agregar un margen negativo para ocultarla.

Esto funcionó para IE11, FF60.9 y Chrome 80

body {
  -ms-overflow-style: none; /** IE11 */
  overflow-y: scroll;
  overflow-x: hidden;
  margin-right: -20px;
}

0

Por si acaso, si alguien está buscando un truco para que de alguna manera la barra de desplazamiento sea invisible en Firefox (79.0).

Aquí hay una solución que funciona con éxito para Chrome, IE, Safari y hace que la barra de desplazamiento sea transparente en Firefox. Nada de lo anterior funcionó para firefox (79.0) al ocultar realmente la barra de desplazamiento.

Por favor, si alguien encuentra una manera de hacerlo sin cambiar el color, será de mucha ayuda. Por favor comente a continuación.

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

.scrollhost ::-moz-scrollbar {
  display: none;
 
}
 
.scrollhost {
  overflow: auto;
  -ms-overflow-style: none;
  scrollbar-color: transparent transparent; /*just hides the scrollbar for firefox */
}

0

Lo hice funcionar para mí en ReactJS usando esto create-react-appal poner esto en mi App.css:

@-moz-document url-prefix() {
  html,
  body {
    scrollbar-width: none;
  }
}

Además, el bodyelemento tieneoverflow: auto

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.