CSS-Scrollbar mit Fortschrittsanzeige

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Scrollbars sind natürliche Fortschrittsanzeigen. Wie weit die Scrollbar nach unten oder zur Seite reicht, ist der Fortschritt beim Scrollen durch dieses Element (oft die gesamte Seite). Sie sind jedoch eher Fortschrittsanzeiger als Anzeigen, wenn man eine Anzeige als etwas betrachtet, das sich beim Fortschritt "auffüllt".

Wir können mit etwas CSS-Trickerei dafür sorgen, dass sich die Scrollbar beim Fortschritt auffüllt.

Dies funktioniert nur mit -webkit- herstellerspezifisch präfigierten Scrollbar-Styling-Eigenschaften. Mit anderen Worten, diese sind nicht standardisiert. Die standardisierten Scrollbar-Styling-Eigenschaften sind scrollbar-width und scrollbar-color, die diese Art von Dingen nicht bewältigen können, aber wahrscheinlich auf lange Sicht sicherer sind. Dennoch werden die herstellerspezifisch präfigierten Versionen wahrscheinlich nicht verschwinden, also ist es wahrscheinlich in Ordnung, wenn Sie dies als eine seltsame Form der progressiven Verbesserung betrachten.

Was ist der Trick?

Im Wesentlichen wird ein riesiger box-shadow am oberen Rand des Scrollbar-Daumens angebracht – oder an der Seite, wenn es sich um ein horizontal scrollendes Element handelt.

:root {
  --shadow: #43a047;
  --scrollbarBG: #eee;
  --thumbBG: #66bb6a;
}
::-webkit-scrollbar {
  width: 16px;
}
::-webkit-scrollbar-track {
  background: var(--scrollbarBG);
}
::-webkit-scrollbar-thumb {
  background-color: var(--thumbBG);
  box-shadow: 0 -100vh 0 100vh var(--shadow), 0 0 15px 5px black;
}

Demo

Dies habe ich zuerst in einem Pen von Myk gesehen.

Dieses Beispiel hat den Daumenteil der Scrollbar überhaupt nicht differenziert, was es eher wie eine Anzeige macht, aber auch schwieriger zu bedienen. Meine Demo hat einen Daumen mit einer leicht anderen Farbe.

Kann ich das wirklich nutzen?

Nein! Abgesehen davon, dass es super seltsam und nicht standardmäßig ist. Safari dreht durch und ich habe keine Ahnung, wie ich das beheben kann.

Ich habe jedoch einen Lieblings-CSS-Trick, der damit eng verwandt ist.

Ich möchte mehr über das Styling von Scrollbars erfahren

Klar, hier ist es.