106
96

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CSSでスクロールバーをカスタマイズ

Last updated at Posted at 2017-07-28

webkit系のSafariとChrome限定ですが、CSSプロパティ::-webkit-scrollbarでブラウザのスクロールバーをカスタマイズできます。
#####Mac OSのオシャレUI…
OS X以降のMacOSではスクローラブルな要素に対してもスクロールバーは非表示で、スクロールが始まったタイミングで初めてふわりと表示させる仕様になっています。
お洒落な演出ですが、この演出のせいでスクロールバー非表示のMacとスクロールバー常時表示のWinでレイアウトがずれてしまうという困った現象が起きます。
OSが違うだけで全く同じブラウザ相手なのでブラウザハックも使えません。

でも::-webkit-scrollbarを覚えておけばもう安心!
#####応用
::-webkit-scrollbarを特定のクラスの中(下記の例なら.container内)に書けば、そのクラスの中だけでスクロールバーのデザインを変えることができます。
メディアクエリを使ってスマホ時とPC時のスクロールバーを異なるデザインにするのも良さそう。

####HTML&CSS

index.html
<div class="container">
  <div class="inner"></div>
</div>
scrollbar.css
/*スクロールバー全体*/
::-webkit-scrollbar {
    width: 10px;
}

/*スクロールバーの軌道*/
::-webkit-scrollbar-track {
  border-radius: 10px;
  box-shadow: inset 0 0 6px rgba(0, 0, 0, .1);
}

/*スクロールバーの動く部分*/
::-webkit-scrollbar-thumb {
  background-color: rgba(0, 0, 50, .5);
  border-radius: 10px;
  box-shadow:0 0 0 1px rgba(255, 255, 255, .3);
}

.container{
  width: 100%;
  height: 400px;
  overflow: auto;
}

.inner{
  background-image: url("http://lorempixel.com/800/800/");
  background-repeat: no-repeat;
  width:100%;
  height:800px;
}

####サンプル
https://jsfiddle.net/6m7bpu5e/4/

106
96
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
106
96

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?