【JS/jQuery】Simplebarでスクロールバーをアレンジする方法を解説!

JS/jQuery

こんにちは!コーダーのゆうしです。

今日はスクロールバーのアレンジに便利な『Simplebar』を紹介します。

スクロールバーのデザインをカスタマイズしたいとき、CSSだけで実装しようとするとiOSで表示されなかったり、ブラウザごとに見た目が変わったりと意外と苦労しますよね。そんなときに便利なのが SimpleBar です。導入も簡単でカスタマイズの幅も広いので、実務でもよく使っています。

SimpleBarとは?

SimpleBarはスクロールバーのデザインをブラウザに依存せずカスタマイズできるJavaScriptライブラリです。CSSだけではiOSのSafariでカスタムスクロールバーが表示されない問題がありますが、SimpleBarを使えばiOSでも意図通りに表示できます。

SimpleBarの導入方法

CDNを使う場合

<head> 内に以下のコードを貼り付けるだけで使えます。

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/simplebar/6.2.5/simplebar.min.css"/>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/simplebar/6.2.5/simplebar.min.js"></script>

最新のCDNはこちらでご確認ください(CDN – Simplebar)

GitHubからダウンロードする場合

CDNを使わずファイルをダウンロードして使いたい場合はGitHub – SimpleBarからどうぞ。

実際に導入してみる(縦バージョン)

See the Pen Untitled by Yushi nakagaki (@YUSHI-NAKAGAKI) on CodePen.

該当のコード

<div class="scroll-area" data-simplebar data-simplebar-auto-hide="false">
  <!-- スクロールさせたいコンテンツ -->
</div>

data-simplebar を追加するだけでSimpleBarが適用されます。data-simplebar-auto-hide="false" はスクロールバーを常に表示する設定です。デフォルトはスクロール時のみ表示される仕様なので、常に見せたい場合はこちらを追加してください。

/* バーの背景(トラック部分) */
.simplebar-track {
  background: #E5E5E5;
  border-radius: 10px;
}

/* バーを常に表示させる */
.simplebar-track .simplebar-scrollbar.simplebar-visible::before {
  opacity: 1;
}

/* バー本体の色 */
.simplebar-track .simplebar-scrollbar::before {
  background: #F7C934;
}

各プロパティの役割はこちらです。

クラス名役割
.simplebar-trackスクロールバーの背景(レール部分)
.simplebar-scrollbar::beforeスクロールバー本体の色や形
opacity: 1バーを常に表示(デフォルトは薄い)

実際に導入してみる(横バージョン)

See the Pen Untitled by Yushi nakagaki (@YUSHI-NAKAGAKI) on CodePen.

横スクロールも同じ記述で対応できます。バーのdivタグにpaddingを設定すると、コンテンツとバーの間にスペースができて見栄えが良くなります。

躓きやすいポイント

スクロールバーが表示されない

SimpleBarはスクロールが発生する要素に対して機能します。対象の要素に heightmax-height が設定されていないとスクロール自体が発生しないため、バーが表示されません。必ず高さを指定してから使用してください。

既存のスクロールバーが残ってしまう

SimpleBarは内部的にスクロール要素を生成して上書きする仕組みです。CSSで ::-webkit-scrollbar を別途指定していると干渉することがあります。競合している場合は該当のCSS記述を削除してみてください。

iOSで表示が崩れる

overflow: auto の指定がない状態でSimpleBarを使うと、iOSのSafariで表示が崩れることがあります。対象要素に overflow: auto を明示的に設定しておくと安定します。

まとめ

SimpleBarはCDNを読み込んで属性を追加するだけで導入でき、CSSで自由にデザインをカスタマイズできる使い勝手の良いライブラリです。iOS対応の問題もクリアできるので、スクロールバーのカスタマイズが必要な案件ではぜひ活用してみてください。

ご不明な点や、コーディングの委託などありましたらお問い合わせにて、お気軽にご連絡ください!

タイトルとURLをコピーしました