SimpleBarはスクロールバーをカスタマイズするライブラリです。スクロールバーを独自につくるのではなく、CSSのスタイルを割り当てるので、おかしな挙動は起こらず、ネイティブなスクロールのパフォーマンスが保たれます。あくまで、スクロールバーの見栄えを変えるだけです。
デザインはCSSで定める
SimpleBarは純粋なCSSでスクロールバーのスタイルを定めます。CSSで与えられるスタイルでさえあれば、自由にカスタマイズできるのです。
軽量なライブラリ
6KBのとても軽いライブラリです。JavaScriptはスクロールの動きそのものには触れません。ネイティブな動きとパフォーマンスが得られます。
モダンブラウザをサポート
ChromeとFirefox、Safariなどのモダンブラウザに加え、Internet Explorer 11をサポートします。
ライブラリの概要はドキュメントとデモページでお確かめください。本稿でつくるのは、つぎのサンプルです。「JavaScript + CSS: ヘッダを上部に固定してカラムの中身はスクロールさせる」のコードにSimpleBarのスタイルを割り当てました。
See the Pen JavaScript + SimpleBar: Customizing scrollbar style by Fumio Nonaka (@FumioNonaka) on CodePen.
インストール
インストールには、npmやyarnが使えます。
npm install simplebar --save
yarn add simplebar
また、unpkgとjsDeliverからCDNで読み込むこともできます。JavaScriptとCSSのライブラリがそれぞれ必要です。
<linkrel="stylesheet"href="https://unpkg.com/simplebar@latest/dist/simplebar.css"/><script src="https://unpkg.com/simplebar@latest/dist/simplebar.min.js"></script><!-- または --><linkrel="stylesheet"href="https://cdn.jsdelivr.net/npm/simplebar@latest/dist/simplebar.css"/><script src="https://cdn.jsdelivr.net/npm/simplebar@latest/dist/simplebar.min.js"></script>
バージョンを固定したいときは、@latest
をバージョン番号に置き替えてください。たとえば、本稿執筆時の最新リリース版であれば、@5.2.1
です。unpkgでバージョンのリストが確かめられます。
なお、Webpackなどのモジュールローダーを使う場合には、JavaScriptとCSSのライブラリをimport
してください。
importSimpleBarfrom'simplebar';import'simplebar/dist/simplebar.css';
data-*グローバル属性で設定する
SimpleBarのもっとも簡単な使い方は、スクロールバーを加えたい要素にdata-*
グローバル属性としてdata-simplebar
を与えることです。なお、スクロールさせる要素には、CSSでoverflow: auto
を定めてください。
<divdata-simplebar><!-- コンテンツ --></div>
これだけで、要素にはSimpleBarのスタイルでスクロールバーが表示されます(図001)。デフォルトでは、要素にマウスポインタを重ねたときバーが表れる自動表示の設定です。
図001■設定されたスクロールバー
つねにスクロールバーを表示しておきたいとき、タグに加えるオプション属性はdata-simplebar-auto-hide
です。JavaScriptコードの場合には、autoHide
オプションを用います。
<divdata-simplebardata-simplebar-auto-hide="false"></div>
JavaScriptコードでSimpleBarを要素に設定する
JavaScriptコードで要素にSimpleBarを設定する場合は、SimpleBar()
コンストラクタに要素の参照を渡すだけです。
newSimpleBar(document.getElementById('myElement'));
オプションは、コンストラクタの第2引数のオブジェクトにプロパティとして渡します。たとえばつぎのコードはスクロールバーの自動表示(autoHide
)をオフにする場合です(デフォルト値はtrue
)。
newSimpleBar(document.getElementById('myElement'),{autoHide:false});
CSSでスクロールバーのスタイルを変える
SimpleBarのスクロールバーのスタイルは、CSSにより定められています。つまり、見栄えがCSSで変えられるということです。ここでは、スクロールさせるスライダのカラーをグラデーションにしてみましょう(図002)。こうしてでき上がったのが、冒頭のCodePenのサンプルです。
.simplebar-scrollbar::before{background:linear-gradient(darkblue,skyblue);}
図002■スライダのカラーがグラデーションになった
SimpleBarのスクロールバーのCSSは、つぎの4つのクラスをもとに組み立てられています。具体的な定めについては、ソースコードsimplebar.css
をご参照ください。
simplebar-content
スクロールするコンテンツを包むラッパーsimplebar-scroll-content
スクロールする要素が収められたコンテナsimplebar-scrollbar
ユーザーがコンテンツを操作するスクロールバーのスタイルの定めsimplebar-track
スクロールバーが置かれた領域のスタイル