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

推薦する

ウェブサイトのフロントエンドをエレガントでユーザーにとって魅力的なものにする方法

ウェブフロントエンドのウェブサイトの気質は感情であり、言葉なしでユーザーを魅了できる感情です。では、...

HTML テーブル マークアップ チュートリアル (15): テーブル タイトル

<br />このタグを使用すると、表のタイトルを直接追加し、タイトル テキストの配置プロ...

Vue でログインと登録テンプレートを実装するためのサンプルコード

テンプレート 1: ログイン.vue <テンプレート> <p class=&quo...

Docker-compose を使用して ELK クラスターを構築する方法

すべてのオーケストレーション ファイルと構成ファイルは、私の Github からアクセスできます。構...

JSは賞金の重さに基づいて当選確率を計算します

目次1. シナリオ例1.1. 抽選の賞品名を設定する1.2. 各賞の重みを設定する1.3. ラッキー...

React スキャフォールディングのパスエイリアスを設定する方法

この記事を書いている時点でのReactのバージョンは16.13.1です1 npm run eject...

入力ボックスのプレースホルダーテキストのデフォルトの色を変更する -webkit-input-placeholder メソッド

HTML5 では、入力用のネイティブ プレースホルダー属性が追加されており、これは高度なブラウザでサ...

VMware Workstation 14 Pro(仮想マシン)にシステムをインストールする方法の詳細な説明

この記事では、VMware Workstation 14 Pro (仮想マシン) にシステムをインス...

js 正規表現の先読みと後読み、および非キャプチャグループ化

目次先読みと後読みをキャプチャグループと組み合わせる捕獲グループと非捕獲グループ前を向いて、後ろを振...

Vue+express+Socketでチャット機能を実現

この記事では、チャット機能を実現するためのVue+express+Socketの具体的なコードを参考...

Linux サーバーでの MySQL インストール情報の表示

mysql のインストール情報を表示します。 #ps -ef | grep mysql usr/bi...

Linux ディスクのマウント、パーティション分割、容量拡張操作を実装する方法

基本概念操作の前に、まずいくつかの基本的な概念を理解する必要がありますディスクLinux システムで...

Docker 経由で Redis 6.x クラスターをデプロイする方法

システム環境: Redis バージョン: 6.0.8 Docker バージョン: 19.03.12シ...

React Native環境のインストールプロセス

react-native インストールプロセス1.npx react-native init Awe...

PC/Pad/Phoneデバイスに自動的に適応するCSSウェブページレスポンシブレイアウト

序文最近は、PC、iPad、携帯電話、スマートウォッチ、スマートテレビなど、さまざまなデバイスが存在...