スクロールバーはデフォルトのデザインではイマイチ気に入らないと思う方も少なくないと思います。
また、実務でもあまりありませんが『スクロールバーをデザイン通りにして下さい』とスクロールバーまでしっかりデザインされている事があります。
今回はこのスクロールバーのデザインをカスタマイズする方法について解説したいと思います。
(有料になっていたらすいません🙇♂️)
CSSでスクロールバーのデザインをカスタマイズする方法
本題に入る前に注意点があります。
今回ご紹介する方法はwebkit系のブラウザでしか使えません。
webkit系とは『Chrome』と『Safari』の事です。
逆に使えないブラウザは『Firefox』になります。
CSSプロパティ『:-webkit-scrollbar』を使う
それでは本題に入りますが、その前にスクロールバーの表示・非表示を設定する方法が分からないという人は以下の記事を参照下さい。
【CSS】スクロールバーの表示・非表示を設定する方法
続きを見る
それでは::-webkit-scrollbar
を使ってスクロールバーをカスタマイズしていきますが、この::-webkit-scrollbar
にはいくつか種類があります。
::-webkit-scrollbar | スクロールバーの幅と高さを指定 |
::-webkit-scrollbar-thumb | スクロールバーの移動する部分 |
::-webkit-scrollbar-track | スクロールバーの背景 |
::-webkit-scrollbar-button | Windowsでのバーの上下に表示されるクリックすると少しスクロール出来るボタン(上下の矢印) |
::-webkit-scrollbar-track-piece | track部分となり、thumbの上下にあるエリア。trackと両方background-colorが設定されていた場合はこちらが優先される。 |
::-webkit-scrollbar-corner | 縦のスクロールバーと横のスクロールバーの間にある右下のエリア。縦横両方のスクロールバーが表示されていないと表示されない。 |
基本的には最初の3つだけで十分なカスタマイズが出来るので、今回はその3つを使ってカスタマイズしてみます。
::-webkit-scrollbar
::-webkit-scrollbar
はスクロールバーの幅と高さを設定出来ます。
幅は『縦スクロールの幅』高さは『横スクロールの高さ』になります。
それぞれ設定する前の状態を見てみたいと思います。
HTMLはこちら。
<div class="sample">
<div class="sample-box">
テキストが入ります。
</div>
<div class="sample-box">
テキストが入ります。
</div>
<!-- 以降繰り返し -->
</div>
See the Pen
Untitled by junpei (@junpei-sugiyama)
on CodePen.
ここでは横スクロールも確認するため、white-space: nowrap;
にして改行させないようにしています。
それではここで::-webkit-scrollbar
を設定してみたいと思います。
CSSはこちらになります。
.sample::-webkit-scrollbar {
height: 20px;
width: 40px;
}
今回は幅を40px、高さを20pxにしてみました。
See the Pen
スクロールバーカスタマイズ:::-webkit-scrollbar by junpei (@junpei-sugiyama)
on CodePen.
・・・幅と高さが変わったのは分かると思いますが、他の項目を設定していないので真っ白です。
それではこのまま他の項目を設定していきたいと思います。
::-webkit-scrollbar-thumb
::-webkit-scrollbar-thumb
はスクロールバーの移動する部分になります。
早速これをカスタマイズしたものを見てみます。
.sample::-webkit-scrollbar {
height: 20px;
width: 40px;
}
.sample::-webkit-scrollbar-thumb {
background: -webkit-gradient(linear, left top, left bottom, color-stop(50%, #4169e1), to(#c71585));
background: linear-gradient(to bottom, #4169e1 50%, #c71585);
border-radius: 20px;
}
See the Pen
スクロールバーカスタマイズ:::-webkit-scrollbar-thumb by junpei (@junpei-sugiyama)
on CodePen.
・・・気持ち悪いスクロールバーになってしまいましたね。
ここで設定したのは以下の項目です。
- background:背景色をグラデーション
- border-radius:角を丸くする
もちろんグラデーションにしないで角を丸めないようにも出来ますし、box-shadow
で影を付けることも出来ます。
また縦スクロールバーの高さや横スクロールバーの幅は、ボックスのサイズやテキストの長さなど中身によっても変わります。
::-webkit-scrollbar-track
::-webkit-scrollbar-track
でスクロールバーの背景色を変えます。
.sample::-webkit-scrollbar {
height: 20px;
width: 40px;
}
.sample::-webkit-scrollbar-thumb {
background: -webkit-gradient(linear, left top, left bottom, color-stop(50%, #4169e1), to(#c71585));
background: linear-gradient(to bottom, #4169e1 50%, #c71585);
border-radius: 20px;
}
.sample::-webkit-scrollbar-track {
background: -webkit-gradient(linear, left top, left bottom, color-stop(50%, #ffd700), to(#3cb371));
background: linear-gradient(to bottom, #ffd700 50%, #3cb371);
border-radius: 20px;
}
See the Pen
スクロールバーカスタマイズ:::-webkit-scrollbar-track by junpei (@junpei-sugiyama)
on CodePen.
・・・なんだかトロピカルな色になりました。
ここも先ほど同じく背景色と角を丸めてみました。
ここで気になるのは右下の白いエリアです。
ここは::-webkit-scrollbar-corner
で背景色を設定すればその色になります。
あとは::-webkit-scrollbar-track
で角を丸めた分、隙間に白い部分が見えています。
この部分は::-webkit-scrollbar-track-piece
で背景色を設定すれば色が変わりますが、::-webkit-scrollbar-track
で設定した色を上書きされてしまうので注意しましょう。
スクロールバーのデザインを整える
最後にこの気持ち悪いスクロールバーを自然な感じにしておきます。
.sample::-webkit-scrollbar {
width: 7px;
}
.sample::-webkit-scrollbar-thumb {
background: -webkit-gradient(linear, left top, left bottom, color-stop(50%, #1bb4d3), to(#1bd8d3));
background: linear-gradient(to bottom, #1bb4d3 50%, #1bd8d3);
border-radius: 5px;
}
.sample::-webkit-scrollbar-track {
background: #dcdcdc;
}
See the Pen
スクロールバーカスタマイズ by junpei (@junpei-sugiyama)
on CodePen.
white-space: nowrap;
は削除して横スクロールはなくしています。
このブログのテーマカラーに寄せたグラデーションにしてみましたが・・・それでもちょっと目立ちますね。
スクロールバーのカスタマイズは控えめにするのが良さそうですね。
まとめ
今回はスクロールバーのデザインをカスタマイズする方法を解説しました。
他にもスクロールバーに関する記事を書いているので、ぜひ参考にしてみて下さい。
【CSS】スクロールバーの表示・非表示を設定する方法
続きを見る
【CSS】スクロール有効のままスクロールバーを非表示にする方法
続きを見る
以上になります。