標準の CSS プロパティ scrollbar-color と scrollbar-width を使用して、スクロールバーの外観をカスタマイズできます。
scrollbar-color: 2 つの<color>値を受け取ります。1 つ目はつまみ(動く部分)に適用され、2 つ目はトラック(固定された背景)に適用されます。scrollbar-width:auto(デフォルト)、thin(細いバリアント)、none(スクロール機能を維持しながらスクロールバーを完全に非表示にする)を指定できます。
scrollbar-color と scrollbar-width を適用する
必須: スクロール可能なコンテナで scrollbar-color と scrollbar-width を使用します。
scrollbar-color を使用する場合は、CSS 変数を使用して、読みやすさと保守性を確保するために、つまみとトラックの色を別々にします(特にフォールバックを使用する場合)。
.scroller {
--scrollbar-thumb: var(--color-neutral-70);
--scrollbar-track: var(--color-neutral-90);
scrollbar-color: var(--scrollbar-thumb) var(--scrollbar-track);
}
代替戦略
scrollbar-color のフォールバックとブラウザ サポート
この機能はプログレッシブ エンハンスメントであり、必ずしもフォールバックが必要なわけではありません。
スタイル設定が重要で、ユーザーの Baseline ターゲットが「Baseline Widely Available」以前の場合は、フォールバックとして非標準の ::-webkit-scrollbar 疑似要素を含めるべきです。
以前のフォールバックを @supports not (scrollbar-color: auto) ブロックでラップして、標準プロパティと以前の WebKit セレクタの両方をネイティブにサポートするブラウザで、それらの競合を防ぎます。
カスタム プロパティを使用して色を定義している場合、それらの色は以前の WebKit セレクタに自動的にカスケードされます。重複して作成する必要はありません。
/* Legacy fallback for WebKit/Blink browsers */
@supports not (scrollbar-color: auto) {
.scroller::-webkit-scrollbar {
/* Must define base size in WebKit for custom colors to be visual */
width: 12px;
height: 12px;
}
.scroller::-webkit-scrollbar-thumb {
background: var(--scrollbar-thumb);
}
.scroller::-webkit-scrollbar-track {
background: var(--scrollbar-track);
}
}