¿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.

Daan Kleijngeld
fuente
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
una solución de trabajo stackoverflow.com/questions/5820304/…
IvanM

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;
}
George Flint
fuente
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 */
}
Rowin
fuente
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);
  });
CrazyScientist
fuente
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 */
          }
Logan Powell
fuente
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

tandel romal
fuente
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.

Myles
fuente
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;
Chris Aelbrecht
fuente
¿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).

Manmeet Kaur
fuente
0

Intente usar esto:

overflow-y: -moz-hidden-unscrollable;

peeter
fuente
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;
  }
}
gazdagergo
fuente
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;
}
John Carroll
fuente
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 */
}
Aditya Patnaik
fuente
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

Dante Souza e Souza
fuente