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 つの記事で Node.js の非同期プログラミングを学ぶ

目次 はじめに 同期 非同期とブロッキング JavaScript のノンブロッキング コールバック ...

MLSQL スタックでストリームのデバッグを簡単にする方法

序文クラスメートが MLSQL Stack のストリーミング サポートを調査しています。そこで、フロ...

CentOS 8 仮想マシンから Windows 10 ホスト フォルダーにアクセスする方法の簡単な分析

VMware Toolsをインストールすると、仮想マシンホスト間で①テキストをコピーして貼り付けるこ...

MySql のグループ化と各グループからランダムに 1 つのデータを取得する

アイデア: 最初にランダムに並べ替えてからグループ化します。 1. テーブルを作成します。 テーブル...

CSS3 transition-delay属性のデフォルト値が単位なしの0であり無効である問題を解決します

今日は、CSS3 の transition-delay 属性のデフォルト値 0 に単位がないのは無効...

Linux の MySQL でリモート接続を承認する方法

注意: 他のマシン (IP) は、承認なしではクライアント経由で MySQL データベースに接続でき...

Tomcat 実行時の JVM エンコーディングの問題を修正

質問:最近、プロジェクトを展開すると文字化けしたデータが出てきました。確認したところ、プロジェクトは...

MySQL ストアド プロシージャ、カーソル、トランザクションの例の詳細な説明

MySQL ストアド プロシージャ、カーソル、トランザクションの例の詳細な説明以下は私が作成した M...

Ubuntu 18.04 Server バージョンのインストールと使用方法 (画像とテキスト)

1 システムのインストール手順OSバージョン:1804イメージのダウンロード: http://cd...

JSホモロジー戦略とCSRFの詳細な説明

目次概要同一生成元ポリシー (SOP)相同制限クロスドメインをバイパスクロスサイトリクエストフォージ...

MySQL Server 8.0.13.0 インストールチュートリアル(画像とテキスト付き)

MySQL 6.1.3 をベースにした 8.0.13 をインストールします。 MySQL 8.0....

Vue3 で状態管理を実装するために provide を使用する方法

目次序文provide/inject を通じて Vuex 関数を実装する方法このプラグインをアプリケ...

...

JavaScript Proxyオブジェクトの詳細な説明

目次1. プロキシとは何ですか? 2. 使い方は? 1. プロキシを使用する簡単な例2. 対象オブジ...

Linuxでスクリーンショットを撮って編集するための最高のツール

メインのオペレーティング システムを Windows から Ubuntu に切り替えたとき、最初に考...