忘れないように記録しとこ

カバの樹

要素のビューポート出入りが監視できる「VueScrollmonitor」の使い方

2019年8月23日

VueScrollmonitorとは

 

VueScrollmonitorは、スクロールモニタで要素がビューポートに出入りするときにイベントを受け取ることができるライブラリです。

もともとはscrollMonitorというライブラリです。

要素を監視してイベントをトリガーするウォッチャーオブジェクトを使用して行います。
ウォッチャーオブジェクトには、ビューポートに対する要素の可視性位置など、監視する要素に関する情報も含まれています。

 

インストール

以下のnpmyarnCDNを使ってインストールします。

npm

npm install vue-scrollmonitor

yarn

yarn add vue-scrollmonitor

CDN

<script src="https://cdn.jsdelivr.net/npm/vue-scrollmonitor@0.1.0/dist/vue-scroll-monitor.min.js"></script>

 

gitリポジトリは以下から取得できます。

https://github.com/AlexandreBonaventure/vue-scrollmonitor

 

導入手順

スクロールモニタで要素がビューポートに出入りするときのイベントを実装します。

1. ライブラリの取り込み

(1)webpack等の場合 ※モジュール版は未検証です。

import { ScrollContainer, ScrollItem } from 'vue-scrollmonitor'

(2)WEBページの場合

const VueScrollMonitor = window.VueScrollMonitor;
const ScrollContainer = VueScrollMonitor.ScrollContainer;
const ScrollItem = VueScrollMonitor.ScrollItem;

2.メソッドを設定

let items =[];
for(let i=0;i<1000;i++){
  items.push('item-'+i);
}

Vue.component('scrollmonitor', {
  template: '#scrollmonitor',
  data() {
    return {
      state: {},
      items:items
    }
  },
  components: {
    ScrollContainer,
    ScrollItem,
  },
  methods: {
    updateState (state) {
      this.state = state
    },
    onChange (state) {
      console.log('change')
    },
  },
});

let app = new Vue({
  el: '#app'
});

3. <scroll-container>と<scroll-item>テンプレートを準備

<div id="app">
  <script type="text/x-template" id="scrollmonitor">
    <scroll-container @change="updateState" class="flex">
        <div class="">
          <scroll-item v-for="i in items" :id="i" :key="i" @change="onChange">
            <span v-text="i" :class="`${state[i] && state[i].isFullyInViewport ? '' : ''}`"></span>          
          </scroll-item>
        </div>
      </scroll-container>
  </script>
  <scrollmonitor />
</div>

 

サンプル

 

さいごに

スクロールモニタで要素がビューポートに出入りするときにイベントを受け取ることができるライブラリでした。

今日はこの辺でー

 

  • B!