429 Stimmen

Benutzerdefinierte CSS-Bildlaufleiste für Firefox

Ich möchte eine Bildlaufleiste mit CSS anpassen.

Ich verwende diesen WebKit-CSS-Code, der für Safari und Chrome gut funktioniert:

::-webkit-scrollbar {
  width: 15px;
  height: 15px;
}

::-webkit-scrollbar-track-piece {
  background-color: #c2d2e4;
}

::-webkit-scrollbar-thumb:vertical {
  height: 30px;
  background-color: #0a4c95;
}

Wie kann ich das Gleiche in Firefox tun?

Ich weiß, dass ich es leicht mit jQuery machen kann, aber ich würde es vorziehen, es mit reinem CSS zu machen, wenn es machbar ist.

288voto

thirtydot Punkte 218830

Seit Ende 2018 sind in Firefox nur noch begrenzte Anpassungen möglich!

Siehe diese Antworten:

Und dies als Hintergrundinformation: https://bugzilla.mozilla.org/show_bug.cgi?id=1460109


Es gibt kein Firefox-Äquivalent zu ::-webkit-scrollbar und Freunde.

Sie müssen bei JavaScript bleiben.

Viele Menschen würden sich diese Funktion wünschen: https://bugzilla.mozilla.org/show_bug.cgi?id=77790


Was die Ersetzung von JavaScript angeht, so können Sie es versuchen:

127voto

Alexander O'Mara Punkte 55724

Firefox 64 fügt Unterstützung für den Spezifikationsentwurf hinzu CSS Scrollbars Modul Stufe 1 der Folgendes hinzufügt zwei neue Objekte de scrollbar-width y scrollbar-color die eine gewisse Kontrolle über die Anzeige der Bildlaufleisten ermöglichen.

Sie können einstellen scrollbar-color auf einen der folgenden Werte setzen (Beschreibungen aus MDN):

  • auto Standard-Platform-Rendering für den Track-Teil des Rollbalkens, wenn keine anderen zugehörigen Rollbalken-Farbeigenschaften vorhanden sind.
  • <color> <color> Wendet die erste Farbe auf den Daumen der Bildlaufleiste an, die zweite auf die Spur der Bildlaufleiste.

Zuvor enthielt die Spezifikation dark y light Werte was wurden nicht in Firefox implementiert . Diese Werte wurden inzwischen aus der Spezifikation entfernt.

Unter Android mit mobilem Firefox kann der Daumen eingefärbt werden, aber es gibt keine Spur zum Einfärben.

Zusätzlich konnten in macOS-Firefox-Versionen vor 99.0 die automatisch ausblendenden halbtransparenten Bildlaufleisten, die der macOS-Standard sind, nicht durch diese Regeln gestaltet werden. Ab Firefox 99.0 können alle macOS-Scrollbar-Modi (konfiguriert unter Systemeinstellungen > Scrollbars anzeigen) eingefärbt werden.

Visuelle Demo:

.scroll {
  width: 20%;
  height: 100px;
  border: 1px solid grey;
  overflow: scroll;
  display: inline-block;
}
.scroll-color-auto {
  scrollbar-color: auto;
}
.scroll-color-colors {
  scrollbar-color: orange lightyellow;
}

<div class="scroll scroll-color-auto">
  <p>auto</p><p>auto</p><p>auto</p><p>auto</p><p>auto</p><p>auto</p>
</div>

<div class="scroll scroll-color-colors">
  <p>colors</p><p>colors</p><p>colors</p><p>colors</p><p>colors</p><p>colors</p>
</div>

Sie können einstellen scrollbar-width auf einen der folgenden Werte setzen (Beschreibungen aus MDN):

  • auto Die Standardbreite der Bildlaufleiste für die Plattform.
  • thin Eine dünne Variante der Bildlaufleiste auf Plattformen, die diese Option bieten, oder eine dünnere Bildlaufleiste als die Standardbreite der Plattform-Bildlaufleiste.
  • none Es wird keine Bildlaufleiste angezeigt, das Element lässt sich jedoch weiterhin verschieben.

Sie können auch einen bestimmten Längenwert gemäß der Spezifikation festlegen. Beide thin und eine bestimmte Länge kann nicht auf allen Plattformen etwas bewirken, und was genau sie bewirkt, ist plattformspezifisch. Insbesondere scheint Firefox derzeit keinen spezifischen Längenwert zu unterstützen ( Dieser Kommentar im Bug-Tracker scheint dies zu bestätigen ). Die Website thin keywork scheint jedoch gut unterstützt zu werden, zumindest unter macOS und Windows.

Bei Standard-Android mit mobilem Firefox wird die auto der Daumen ist schon recht dünn, und thin macht es nicht dünner.

Es ist wahrscheinlich erwähnenswert, dass die Option length value und der gesamte scrollbar-width Eigenschaft werden für die Entfernung in einem zukünftigen Entwurf in Betracht gezogen, und wenn das passiert, könnte diese spezielle Eigenschaft in einer zukünftigen Version von Firefox entfernt werden.

Visuelle Demo:

.scroll {
  width: 30%;
  height: 100px;
  border: 1px solid grey;
  overflow: scroll;
  display: inline-block;
}
.scroll-width-auto {
  scrollbar-width: auto;
}
.scroll-width-thin {
  scrollbar-width: thin;
}
.scroll-width-none {
  scrollbar-width: none;
}

<div class="scroll scroll-width-auto">
<p>auto</p><p>auto</p><p>auto</p><p>auto</p><p>auto</p><p>auto</p>
</div>

<div class="scroll scroll-width-thin">
<p>thin</p><p>thin</p><p>thin</p><p>thin</p><p>thin</p><p>thin</p>
</div>

<div class="scroll scroll-width-none">
<p>none</p><p>none</p><p>none</p><p>none</p><p>none</p><p>none</p>
</div>

71voto

Luca Detomi Punkte 5190

Desde Firefox 64 ist es möglich zu verwenden neue Brillengläser für eine einfache Gestaltung der Bildlaufleiste ( nicht so vollständig wie in Chrome mit Herstellerpräfixen ).

En dieses Beispiel ist es möglich, eine Lösung zu sehen, die verschiedene Regeln kombiniert, um sowohl Firefox als auch Chrome mit einem ähnlichen (nicht gleichen) Endergebnis zu adressieren (Beispiel verwenden Sie Ihre ursprünglichen Chrome-Regeln):

Die wichtigsten Regeln sind:

Für Firefox

.scroller {
  overflow-y: scroll;
  scrollbar-color: #0A4C95 #C2D2E4;
}

Für Chrom

.scroller::-webkit-scrollbar {
    width: 15px;
    height: 15px;
}

.scroller::-webkit-scrollbar-track-piece  {
    background-color: #C2D2E4;
}

.scroller::-webkit-scrollbar-thumb:vertical {
    height: 30px;
    background-color: #0A4C95;
}

Bitte beachten Sie, dass in Bezug auf Ihre Lösung auch einfachere Chrome-Regeln wie die folgenden verwendet werden können:

.scroller::-webkit-scrollbar-track  {
    background-color: #C2D2E4;
}

.scroller::-webkit-scrollbar-thumb {
    height: 30px;
    background-color: #0A4C95;
}

Um die Pfeile in den Bildlaufleisten auch in Firefox auszublenden, ist es derzeit notwendig, sie als " dünn " mit der folgenden Regel scrollbar-width: thin;

44voto

Tomaz Punkte 541

Darf ich eine Alternative anbieten?

Keinerlei Skripting, nur standardisierte CSS-Stile und ein wenig Kreativität. Kurze Antwort - Maskierung von Teilen der bestehenden Browser-Scrollbar, was bedeutet, dass Sie alle seine Funktionalität beibehalten.

.scroll_content {
    position: relative;
    width: 400px;
    height: 414px;
    top: -17px;
    padding: 20px 10px 20px 10px;
    overflow-y: auto;
}

Eine Demo und eine etwas ausführlichere Erklärung finden Sie hier...

jsfiddle.net/aj7bxtjz/1/

39voto

human Punkte 375

Jahr 2020 funktioniert dies

/* Thin Scrollbar */
:root{
  scrollbar-color: rgb(210,210,210) rgb(46,54,69) !important;
  scrollbar-width: thin !important;
}

https://github.com/Aris-t2/CustomCSSforFx/issues/160

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X