Vueはリストのシームレスなスクロールを実装します

Vueはリストのシームレスなスクロールを実装します

この記事の例では、リストのシームレスなスクロールを実現するためのvueの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

HTML パーツコード

<テンプレート>
  <div id="box" class="wrapper">
    <div class="contain" id="con1" ref="con1" :class="{anim:animate==true}">
      <リスト
        v-for="(item,index) in cloudList"
        :key="インデックス"
        :listData="アイテム"
        :index="インデックス"
        :date="日付"
      </リスト>
    </div>
  </div>
</テンプレート>

List は単一のリスト コンポーネントであり、li に置き換えることもできます。

CSSパーツコード

<スタイルスコープ>
.ラッパー{
  幅:96vw;
  高さ:90vh;
  位置: 絶対;
  左:2vw;
  上: 1rem;
  オーバーフロー: 非表示;
}
.contain > div:nth-child(2n) { //このスタイルはプロジェクトに必須であり、シームレススクロールとは関係ありません。Margin-left: 2vw は無視できます。
}
.アニメーション{
  遷移: すべて 0.5 秒;
  上マージン: -7vh;
}
</スタイル>

私のリストコンポーネントはfloat: leftに設定されているため、id="con1"のdivには高さがありません。

jsコードの一部

<スクリプト>
'./List' からリストをインポートします。
エクスポートデフォルト{
  名前: '含む'、
  データ () {
    戻る {
      cloudList: [], //リストデータを格納する配列 date: '', //最新のデータ更新日 animate: false,
      time: 3000, //時間指定スクロール間隔 setTimeout1: null,
      setInterval1: ヌル
    };
  },
  コンポーネント:
    リスト
  },
  メソッド: {
    // jsonデータを取得し、日付を更新します getCloudListData () {
      _this は定数です。
      _this.$api.getCloudListData().then(res => {
        _this.cloudList = res;
      });
      var newDate = 新しいDate();
      _this.date = _this.dateFtt('yyyy-MM-dd hh:mm:ss', 新しい日付);
    },
    // 日付形式 dateFtt (fmt, date) {
      var o = {
        'M+': date.getMonth() + 1, // 月 'd+': date.getDate(), // 日 'h+': date.getHours(), // 時間 'm+': date.getMinutes(), // 分 's+': date.getSeconds(), // 秒 'q+': Math.floor((date.getMonth() + 3) / 3), // 四半期 S: date.getMilliseconds() // ミリ秒 };
      if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(
          正規表現$1、
          (date.getFullYear() + '').substr(4 - 正規表現.$1.length)
        );
      }
      (var k in o) {
        if (新しい正規表現('(' + k + ')').test(fmt)) {
          fmt = fmt.replace(
            正規表現$1、
            正規表現$1.長さ === 1
              ? わかりました]
              : ('00' + o[k]).substr(('' + o[k]).length)
          );
        }
      }
      fmt を返します。
    },
    // スクロール scroll() {
      _this は定数です。
      _this.animate = true;
      タイムアウトをクリアします(_this.setTimeout1);
      _this.setTimeout1 = setTimeout(() => {
        var 親 = document.getElementById('con1');
        var first = document.getElementById('con1').children[0];
        var second = document.getElementById('con1').children[1];
        親.removeChild(最初の子);
        親.removeChild(2番目);
        親.appendChild(最初の子);
        親.appendChild(2番目);
        _this.animate = false;
      }, 500);
    }
  },
  作成された(){
    _this は定数です。
    _this.getCloudListData();
    //タイマーは24時間ごとにデータを更新します setInterval(() => {
      _this.getCloudListData();
    }, 24 * 60 * 60 * 1000);
  },
  マウントされた(){
    _this は定数です。
    var contain = document.getElementById('box');
    _this.setInterval1 = setInterval(_this.scroll, _this.time);
    var setInterval2 = null;
    //マウスがスクロールエリアに移動してスクロールを停止します。contain.onmouseenter = function () {
      間隔をクリアします(_this.setInterval1);
      var カウント = 0;
      // マウスが10秒以上動かない場合はスクロールを開始する setInterval2 = setInterval(function () {
        カウント++;
        (カウント === 10)の場合{
          _this.scroll();
          _this.setInterval1 = setInterval(_this.scroll, _this.time);
        }
      }, 1000);
      //マウスが動くとすぐにスクロールを停止し、カウントを 0 に設定します
      contain.onmousemove = 関数(){
        カウント = 0;
        間隔をクリアします(_this.setInterval1);
      };
    };
    // マウスがスクロール領域から外れた contain.onmouseleave = function () {
      間隔をクリアします(間隔2を設定します);
      間隔をクリアします(_this.setInterval1);
      _this.scroll();
      _this.setInterval1 = setInterval(_this.scroll, _this.time);
    };
  }
};
</スクリプト>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueはメッセージのシームレスな上向きスクロール効果を実現します
  • vue-seamless-scroll をベースにしたシームレスなスクロール効果を実現します。
  • vue-seamless-scroll シームレススクロールコンポーネントの使い方の詳しい説明
  • Vueは無限のメッセージのシームレスなスクロールを実現
  • Vueはシンプルなシームレスなスクロール効果を実装します
  • Vueはリストのシームレスなスクロール効果を実装します
  • Vueはリストのシームレスな垂直スクロールを実装します
  • Vue3はCSSの無限シームレススクロール効果を実装します
  • vue.js に基づくシームレスなスクロール効果
  • リストを上方向にシームレスにスクロールするための Vue または CSS アニメーション

<<:  Linux システムで PATH 環境変数を設定する方法 (3 つの方法)

>>:  このようなシェル スクリプトを使用して、多数の MySQL データベースを強制終了します (推奨)

推薦する

ラベルとボタンを削除し、背景画像の点線/影を追加すると完璧な解決策になります

ユーザーが登録すると、ラベルをクリックして確認コードを変更します。クリックするとラベルに影の部分がで...

explainコマンドがMySQLデータを変更する理由

クエリで EXPLAIN を実行するとデータベースが変更されるかどうかを尋ねられた場合、おそらく「い...

nginx で SSL 証明書を設定して https サービスを実装する方法

前回の記事では、openssl を使用して無料の証明書を生成した後、この証明書を使用してローカル ノ...

VUE のコンパイル スコープとスロット スコープのスロットの問題について

スロットとは何ですか?スロット ディレクティブは v-slot であり、現在 slot と slot...

Vue3 コンパイルプロセス - ソースコード分析

序文: Vue3 がリリースされてからかなり経ちますが、最近、会社のプロジェクトでVue3 + Ty...

Linux での MySQL データベースのアンインストール

Linux で MySQL データベースをアンインストールするにはどうすればいいですか? 以下では、...

HTML の基礎必読 - CSS スタイルシートの包括的な理解

CSS (カスケーディング スタイル シート) は、HTML Web ページを美しくするために使用さ...

Nginxポーリングアルゴリズムの基本的な実装方法の詳細な説明

ポーリングアルゴリズムの紹介多くの人が職場で nginx を使用しており、その設定に精通しています。...

MySql で、存在しない場合は挿入し、存在する場合は更新する方法

まとめシナリオによっては、レコードがない場合は挿入し、レコードがある場合は更新するという要件がある場...

MySQLトランザクション処理の使用方法とサンプルコードの詳細な説明

MySQL トランザクション サポートは、MySQL サーバー自体にバインドされているのではなく、ス...

フレックスレイアウトでコンテナ内のコンテンツを維持するためのソリューションの詳細な説明

モバイル側では、フレックスレイアウトが非常に便利です。デバイスの幅に応じてコンテナの幅を自動的に調整...

HTML を使用して IE8 および IE9 の互換表示モードを無効にするヒント

IE 8 以降では互換モードが追加され、これを有効にすると IE の下位バージョンでレンダリングされ...

react+antdプロジェクトをゼロから構築する方法を教えます

これまでの記事はすべて私自身の学習記録であり、主に以前に遭遇した落とし穴を忘れないようにするためのも...

Bootstrap5 ブレークポイントとコンテナの具体的な使用法

目次1. Bootstrap5 ブレークポイント1.1 モバイルファースト1.2 ブートストラップブ...

クラスタrpmを使用してMySQLをインストールするための詳細な手順

MySQLデータベースをインストールするa) MySQL ソースインストールパッケージをダウンロード...