目次
vue-scrolltoとは
「vue-scrollto」は、クリックイベントによって要素までイージングスクロールを実装するライブラリです。
window.requestAnimationFrame
を使用してアニメーションを実行するため、最高のパフォーマンスが得られます。
イージングはbezier-easingを使って行われます
環境
Vue | 2.6.10 |
vue-scrollto | 3.14.1 |
インストール
以下のnpm、yarn、CDNを使ってインストールします。
npm
npm install --save vue-scrollto
yarn
yarn add vue-scrollto
CDN
<script src="https://cdn.jsdelivr.net/npm/vue-scrollto"></script>
gitリポジトリは以下から取得できます。
https://github.com/rigor789/vue-scrollTo
導入手順
シンプルなイージングスクロールを実装します。
1. ライブラリの取り込み
(1)webpack等の場合 ※モジュール版は未検証です。
var VueScrollTo = require('vue-scrollto'); Vue.use(VueScrollTo)
(2)WEBページの場合
Vue.use(VueScrollTo)
2.イージングスクロールのメソッドを設定
new Vue({ el: '#app', data: { toBottom: '#bottom', toTop: '#top' } })
3. テンプレートを準備
<div id="app"> <div id="top">top</div> <a href="#" v-scroll-to="toBottom">Scroll to bottom</a> <div id="middle">middle</div> <a href="#" v-scroll-to="toTop">Scroll to top</a> <div id="bottom">bottom</div> </div>
4.サンプルCSS
#app { height: 1200px; padding-left: 200px; } #middle { height: 100%; }
サンプル
オプション
「vue-scrollto」のオプション一覧は以下になります。
Name | Default | Description |
---|---|---|
el / element | 必須。スクロールしたい要素。 | |
container | body | スクロールする必要があるコンテナー。 |
duration | 500 | スクロールアニメーションの長さ(ミリ秒)。 |
easing | ease | アニメーション化するときに使われるイージング。イージングのセクションでもっと読んでください。 |
offset | 0 | スクロール時に適用されるべきオフセット。このオプションはv2.8.0からコールバック関数を受け付けます。 |
force | true | スクロールターゲットがすでに表示されている場合でも、スクロールを実行する必要があるかどうかを示します。 |
cancelable | true | ユーザーがスクロールをキャンセルできるかどうかを示します。 |
onStart | noop | スクロールが始まったときに呼ばれるべきコールバック関数。ターゲット要素をパラメータとして受け取ります。 |
onDone | noop | スクロールが終了したときに呼び出されるべきコールバック関数。ターゲット要素をパラメータとして受け取ります。 |
onCancel | noop | スクロールがユーザーによって中止されたときに呼び出されるコールバック関数(ユーザーがスクロールした、クリックしたなど)。パラメータとしてabortイベントとターゲット要素を受け取ります。 |
x | false | X軸上でスクロールするかどうか |
y | true | y軸上でスクロールするかどうか |
Easing
オプションのeasing
の種類は以下になります。
let easings = { 'ease': [0.25, 0.1, 0.25, 1.0], 'linear': [0.00, 0.0, 1.00, 1.0], 'ease-in': [0.42, 0.0, 1.00, 1.0], 'ease-out': [0.00, 0.0, 0.58, 1.0], 'ease-in-out': [0.42, 0.0, 0.58, 1.0] }
まとめ
クリックイベントによって要素までイージングスクロールを実装するライブラリでした。
活用法は色々ありそうです。
今日はこの辺でー