Web制作 CSS

【CSS】スクロールバーのデザインをカスタマイズする方法

スクロールバーのデザインって変えられないの?

スクロールバーはデフォルトのデザインではイマイチ気に入らないと思う方も少なくないと思います。

また、実務でもあまりありませんが『スクロールバーをデザイン通りにして下さい』とスクロールバーまでしっかりデザインされている事があります。

今回はこのスクロールバーのデザインをカスタマイズする方法について解説したいと思います。

今だけ!5大無料特典あり🎁

コーディングの時給アップにはこちら!


CSSでスクロールバーのデザインをカスタマイズする方法

本題に入る前に注意点があります。

今回ご紹介する方法はwebkit系のブラウザでしか使えません。

webkit系とは『Chrome』と『Safari』の事です。

逆に使えないブラウザは『Firefox』になります。

 

CSSプロパティ『:-webkit-scrollbar』を使う

それでは本題に入りますが、その前にスクロールバーの表示方法が分からないという人は以下の記事を参照下さい。

参考記事
【CSS】スクロールバーの表示・非表示を設定する方法
【CSS】スクロールバーの表示・非表示を設定する方法

続きを見る

それでは::-webkit-scrollbarを使ってスクロールバーをカスタマイズしていきますが、この::-webkit-scrollbarにはいくつか種類があります。

::-webkit-scrollbarスクロールバーの幅と高さを指定
::-webkit-scrollbar-thumbスクロールバーの移動する部分
::-webkit-scrollbar-trackスクロールバーの背景
::-webkit-scrollbar-buttonWindowsでのバーの上下に表示されるクリックすると少しスクロール出来るボタン(上下の矢印)
::-webkit-scrollbar-track-piecetrack部分となり、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】スクロールバーの表示・非表示を設定する方法

続きを見る

あわせて読む
【CSS】スクロール有効のままスクロールバーを非表示にする方法
【CSS】スクロール有効のままスクロールバーを非表示にする方法

続きを見る

 

コーディングの時給と作業効率を上げる!
2年間の実務で実際に使ったコードをまとめた『コーディング&WordPressメモまとめ集』をBrainで公開しています。
  • コピペで使えるWordPressの各テンプレート
  • 実務でよく使う見出し一覧
  • 実務でよく使うテキストのhoverアニメーション
  • 実務でよく使うボタン内の矢印9種類
  • Contact Form 7の色々・・・
などなど、他にもコピペで使えるコードがたくさん載せてあるので、時短=時給アップに繋がります。
さらに『コードのまとめ方が参考になった』というレビューも多数頂いているので、これを元に自分なりの"メモまとめ集"を作るという使い方も出来ます。
レビューは390件以上あるので、気になる方は以下のボタンからチェックしてみて下さい👇

今だけ!5大無料特典あり🎁

販売ページとレビューを見てみる


ブログランキング・にほんブログ村へ
  • この記事を書いた人

じゅんぺい

タイ・バンコク在住のWeb制作フリーランス兼ブロガー▶︎37歳からWeb制作を開始▶︎コーディングとWordPressのオリジナルテーマ制作でこれまで80件以上納品▶︎Web制作中心の当ブログは月間最高8.4万PV▶︎Twitterのフォロワーは6100人▶︎コーディングとWordPressのコンテンツを販売し、3日で500部突破&250万円&人気1位獲得 → 累計700部&420万円突破

-Web制作, CSS