Wie verstecke ich die Bildlaufleiste in Firefox?


81

Ich habe gerade herausgefunden, wie man die Bildlaufleiste in Google Chrome ausblendet. Ich habe es mit diesem Code gemacht:

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

Das einzige Problem ist, dass dies unter Firefox nicht funktioniert. Ich habe viele Möglichkeiten ausprobiert, aber es funktioniert immer noch nicht.


2
scheint keine gute Idee zu sein, es so zu machen. Verwenden Sie den auf HTML, Body versteckten CSS-Überlauf und ein Wrapper-Div mit 100% Höhe und Breite.
Abhitalks

Das mag etwas zu offensichtlich sein, aber haben Sie -moz- für Firefox ausprobiert? Ich stimme Abhitalks jedoch zu, dies scheint keine großartige Möglichkeit zu sein, dies zu tun.
Myles


eine funktionierende Lösung stackoverflow.com/questions/5820304/…
IvanM

Antworten:


114

Sie können die scrollbar-widthRegel verwenden. Sie können scrollbar-width: none;die Bildlaufleiste in Firefox ausblenden und trotzdem frei scrollen.

body {
   scrollbar-width: none;
}

Sie haben einen Tippfehler, aber dies sollte die akzeptierte Lösung sein.
Shirajg

7
Dies funktioniert mit dem neuesten Browser, aber bitte beachten Sie, dass dies immer noch eine experimentelle Funktion ist . Beachten Sie außerdem, dass diese Eigenschaft für das Element verwendet werden sollte, das die Bildlaufleiste erstellt. Wenn Sie beispielsweise Winkelmaterial verwenden md-content, erzeugt der Körper nicht die Bildlaufleiste, sondern das md-contentElement. Daher body { scrollbar-width: none; }wird nicht funktionieren, sondern md-content { scrollbar-width:none; }wird.
Sajib Acharya

Danke Bruder, du hast mir viel Zeit gespart !!
John

23

Um die Bildlaufleiste in Chrome, Firefox und IE auszublenden, können Sie Folgendes verwenden:

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

20

Ich konnte die Bildlaufleiste ausblenden, aber mit dieser Lösung immer noch mit dem Mausrad scrollen:

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

Laden Sie das Plugin https://github.com/brandonaaron/jquery-mousewheel herunter und fügen Sie diese Funktion hinzu:

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
Dies scheint gleichbedeutend mit "Überlauf: versteckt" zu sein. und erlaubt keine Schriftrolle :-(
Bob

Funktioniert für mich - horizontale Bildlaufleiste jetzt in Firefox versteckt. Vielen Dank!
Liran H

4
Ab 63 Firefox funktioniert dies nur , wenn Sie festgelegt , layout.css.overflow.moz-scrollbars.enabledum truein Firefox Funktionseinstellungen, es ungeeignet für den produktiven Einsatz zu machen. developer.mozilla.org/en-US/docs/Web/CSS/overflow#Deprecated
Josh

Das hat mir nicht geholfen, aber die Breite der Bildlaufleiste zu setzen: keine; innerhalb von HTML tat.
Slodeveloper

8

Dies ist, was ich brauchte, um Bildlaufleisten zu deaktivieren, während der Bildlauf in Firefox, Chrome und Edge in beibehalten wurde:

          @-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

Verwenden Sie für das Webkit Folgendes:

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

Verwenden Sie für Mozilla Firefox den folgenden Code:

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

und wenn das Scrollen nicht funktioniert, fügen Sie hinzu

element {overflow-y: scroll;}

zu einem bestimmten Element


4

Dies ist so etwas wie eine generische Lösung:

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

Die Bildlaufleiste wird vom übergeordneten Div ausgeblendet.

Dies erfordert die Verwendung von overflow: versteckt im übergeordneten div.


3
Funktioniert, ist aber nicht zuverlässig, da 16px nur eine angenommene Breite der Bildlaufleiste ist.
Igorpavlov

46
Geben Sie dem echten Autor @chowey beim Kopieren Credits. stackoverflow.com/questions/15394065/…
Rexhin Hoxha

Es funktioniert nicht auf FF 56, wenn der innere Div-Inhalt länger als die Bildschirmbreite ist
Mr Jedi

3
Dieser Fix löst das Problem für FF, hat aber schlimmere Nebenwirkungen in anderen Browsern (Schneiden des Textes)
Kosmonaft

Ich kann mir leicht vorstellen, dass ich das in allen Divs verwende, die ein Scrollen über meine App erfordern ...
Philippe

3

Für eine neuere Version von Firefox funktionieren die alten Lösungen nicht mehr, aber ich habe in Version 66.0.3 erfolgreich die scrollbar-colorEigenschaft verwendet, die Sie festlegen können transparent transparentund die die Bildlaufleiste in Firefox auf dem Desktop zumindest unsichtbar macht (findet immer noch in statt) Das Ansichtsfenster und auf Mobilgeräten funktioniert nicht, aber dort ist die Bildlaufleiste eine feine Linie, die rechts über dem Inhalt platziert wird.

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

Wie machst du das in FF70 +? scrollbar-width: none;funktioniert nicht mehr Ich muss die Bildlaufleiste ausblenden, nicht transparent machen.
Gen b.


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

In Firefox funktioniert dies nicht, da Firefox die Unterstützung für versteckte Bildlaufleisten mit Funktionen aufgegeben hat (die Sie overflow: -moz-scrollbars-none;in alten Versionen verwenden können).


0

Versuchen Sie Folgendes:

overflow-y: -moz-hidden-unscrollable;


2
Es versteckt sich scrollbar, stoppt aber die Bildlaufaktion. Was ist der Unterschied zwischen overflow-y: -moz-hidden-unscrollable;und overflow: hidden. Eigentlich nichts, also ist es nicht die richtige Antwort. aber ich gebe dir eine Stimme. Vielen Dank.
AmerllicA

2
Der Unterschied ist, dass der erste es nur in Firefox
Peeter

Ich habe dich gewählt, aber es ist so komisch für mich, warum du bist -2? Ihre Antwort ist richtig
AmerllicA

Die Frage ist, wie die Bildlaufleisten ausgeblendet werden können, der Benutzer jedoch bei Bedarf einen Bildlauf durchführen kann, wenn der Inhalt überläuft, um den Bildlauf nicht vollständig zu deaktivieren. Der Grund dafür ist, dass FF-Bildlaufleisten hässlich sind und manchmal auch dann angezeigt werden, wenn der Inhalt nicht überläuft. Alle anderen Browser bieten dafür eine einfache und elegante CSS-Lösung - darf ich sagen, sogar IE!
Philippe

0

In bestimmten Fällen (das Element befindet sich ganz rechts auf dem Bildschirm oder der übergeordnete Überlauf ist ausgeblendet) kann dies eine Lösung sein:

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

0

Ich habe alles versucht und was für meine Lösung am besten funktioniert hat, war, immer die vertikale Bildlaufleiste anzuzeigen und dann einen negativen Rand hinzuzufügen, um sie auszublenden.

Dies funktionierte für IE11, FF60.9 und Chrome 80

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

0

Nur für den Fall, dass jemand nach einem Hack sucht, um die Bildlaufleiste in Firefox (79.0) unsichtbar zu machen.

Hier ist eine Lösung, die erfolgreich für Chrome, IE und Safari funktioniert und die Bildlaufleiste in Firefox transparent macht. Keiner der oben genannten Punkte hat für Firefox (79.0) dazu beigetragen, die Bildlaufleiste wirklich auszublenden.

Wenn jemand einen Weg findet, dies zu tun, ohne die Farbe zu ändern, ist dies sehr hilfreich. Bitte Kommentar unten.

.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

Ich habe es für mich in ReactJS zum Laufen gebracht, create-react-appindem ich Folgendes in mein App.css:

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

Auch das bodyElement hatoverflow: auto

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.