自分の好みのスクロールバーに。「perfect-scrollbar」でかんたんにスクロールバーをカスタマイズする -『javascript』
- uto usui
- //
- javascript
- jQuery
- plug-in
- scroll
「perfect-scrollbar」は任意のボックス内のスクロールバーをカスタマイズできるjQueryプラグインで、SCSSを扱える環境だと見た目やホバーしたときのカスタマイズもかなり容易で、スクロールのスピードを変更したりなどオプションも豊富です。
perfect scrollbar でスクロールバーをカスタマイズする
利用するにはperfect-scrollbarのgithubページからかbowerでダウンロードします。
terminal
bower install perfect-scrollbar
実装がすごくかんたん
実装はかんたんです。スクロールしたい親ボックスに position
とoverflow
のプロパティを設定します。親ボックスをjQueryで選択してメソッドを実行します。
html
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
css
.container {
position: relative;
overflow: auto;
}
javascript
$('.container').perfectScrollbar();
見た目のスタイルの変更
見た目はvariable.scssを編集することで簡単にカスタマイズできます。
variables.scss
$ps-border-radius: 6px !default; // スクロールバーの丸み
$ps-rail-default-opacity: 0 !default; // コンテナにマウスが入ってない時の透過度
$ps-rail-container-hover-opacity: 0.6 !default; // コンテナにマウスが入った時の透過度
$ps-rail-hover-opacity: 0.9 !default; // スクロールバーにマウスが入った時の透過度
$ps-bar-bg: transparent !default;
$ps-bar-container-hover-bg: #aaa !default;
$ps-bar-hover-bg: #999 !default;
$ps-rail-hover-bg: #eee !default;
// Sizes
$ps-scrollbar-x-rail-bottom: 0px !default;
$ps-scrollbar-x-rail-height: 15px !default;
$ps-scrollbar-x-bottom: 2px !default;
$ps-scrollbar-x-height: 6px !default;
$ps-scrollbar-x-hover-height: 11px !default;
$ps-scrollbar-y-rail-right: 0 !default;
$ps-scrollbar-y-rail-width: 15px !default;
$ps-scrollbar-y-right: 2px !default;
$ps-scrollbar-y-width: 6px !default;
$ps-scrollbar-y-hover-width: 11px !default;
オプションを渡してカスタマイズ
スピードとスクロールバーの高さを変更してみます。
javascript
$('.container').perfectScrollbar({
wheelSpeed: .2,
minScrollbarLength: 100
});
デフォルトだとカスタマイズしたスクロールバーが設置されているボックスのスクロールが終わったとき、マウスのスクロールの動作が画面のスクロールに切り替わりません。これには以下のオプションを渡すことで解決します。
wheelPropagation: true
実装するサイトがレスポンシブデザインなど、リサイズされることが予想される場面では、スクリプトを更新します。
.perfectScrollbar('update')
というように記述しますが、画面のリサイズが終了したときだけに実行するためには以下のように記述します。
var scrollBoxUpdate = function() {
$('.js-scroll-box').perfectScrollbar('update');
};
var finishResizeEvent = function() {
var timer = false;
$window.resize(function() {
if (timer !== false) {
clearTimeout(timer);
}
timer = setTimeout(function() {
scrollBoxUpdate();
}, 300);
});
};
finishResizeEvent();
demo
オプションなど豊富に用意されているのと、SCSSで簡単にカスタマイズできるのが「perfect-scrollbar」の特徴かとおもいます。デフォルトのデザインやアクションはmacOSに似せてあるので、Windows環境でもmacOSのようなスクロールバーを実装することができます。
おわります。