🐙

Vue でスクロールイベントを作成する | Vue3(Options API)

に公開

概要

Vue でウェブアプリケーションを構築しているときに、ユーザのスクロールを検知してトップへ戻るボタンを表示したり、メニューバーを表示/非表示したりと、やることが多かったので、その時のメモ。

コード

App.vue
export default {
  data() {
    return {
      lastScrollY: 0, // 前回のスクロール位置
    };
  },
  methods: {
    handleScroll() {
      const currentScrollY = window.scrollY; // 現在のスクロール位置

      if (currentScrollY <= 100) {
        // ページ上部で実行するもの
      } else if (currentScrollY < this.lastScrollY) {
        // スクロールアップした場合に実行するもの
      } else {
        // スクロールダウンした場合に実行するもの
      }
      this.lastScrollY = currentScrollY; // スクロール位置を記録
    },
  },
  mounted() {
    // スクロールイベントをリッスン
    window.addEventListener('scroll', this.handleScroll);
  },
  beforeUnmount() {
    // コンポーネント破棄時にイベントリスナーを削除
    window.removeEventListener('scroll', this.handleScroll);
  },
};

Discussion