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 データベースを強制終了します (推奨)

推薦する

丸い角や鋭い角の代わりに文字を使用することに関する研究経験の共有

1. フォントと文字表示の関係左側と右側の鋭角部分は Songti フォントで表示されます: &l...

CSS 要素で計算されたスタイルを取得します (カスケード/最終スタイル後)

CSS 要素内の計算されたスタイル (つまり、カスケード後の最終的なスタイル) を取得するには、W3...

dockerでマウントされたディレクトリが読み書きできない問題を解決する

次のコマンドを使用してコンテナを作成し、ローカルの /home/dock/Downloads ディレ...

MIME タイプの完全なリスト

MIME タイプとは何ですか? 1. まず、ブラウザがコンテンツを処理する方法を理解する必要がありま...

WeChatアプレットの世界的な状況の詳細な説明

序文WeChat アプレットでは、App.js の globalData を中間ブリッジとして使用し...

ウェブページ作成のテスト問題を全て解けますか?

Web ページのデザインに関する質問です。すべてに答えられるでしょうか? 1. 単一選択の質問 (...

JavaScript ツールチェーンの不完全なガイド

目次概要静的型チェックコードスタイルチェック(Linter)パッケージマネージャーモジュールローダー...

Linuxファイルシステム操作の実装

この読書ノートでは、主にファイルシステムに関連する操作を記録します。ディスクとディレクトリの容量ディ...

Linux の ufw ファイアウォールの紹介

Linux のufw (Uncomplicated Firewall) を見て、ファイアウォールに変...

Docker、プレーヤー機能を備えたCMSオンデマンドシステムを構築

目次文章1. 機械を準備する2. Dockerをインストールする1. 依存パッケージをインストールす...

MySQL GROUP_CONCAT 制限の解決

効果: GROUP_CONCAT関数は、フィールド値を文字列に連結することができます。デフォルトの区...

Docker Compose で環境変数を参照する方法の例

プロジェクトでは、さまざまな条件や使用シナリオを制御するために、docker-compose.yml...

docker で Apollo をデプロイする詳細なチュートリアル

1. はじめにここでは apollo について詳しく説明しません。公式サイト https://git...

HTMLデータ送信投稿_PowerNode Java Academy

HTTP/1.1 プロトコルで指定されている HTTP リクエスト メソッドには、OPTIONS、...

Mysql 5.7.19 無料インストール バージョンで遭遇した落とし穴 (コレクション)

1. 公式ウェブサイトから 64 ビットの zip ファイルをダウンロードします。 2. インスト...