この記事の例では、リストのシームレスなスクロールを実現するための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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux システムで PATH 環境変数を設定する方法 (3 つの方法)
>>: このようなシェル スクリプトを使用して、多数の MySQL データベースを強制終了します (推奨)
ユーザーが登録すると、ラベルをクリックして確認コードを変更します。クリックするとラベルに影の部分がで...
クエリで EXPLAIN を実行するとデータベースが変更されるかどうかを尋ねられた場合、おそらく「い...
前回の記事では、openssl を使用して無料の証明書を生成した後、この証明書を使用してローカル ノ...
スロットとは何ですか?スロット ディレクティブは v-slot であり、現在 slot と slot...
序文: Vue3 がリリースされてからかなり経ちますが、最近、会社のプロジェクトでVue3 + Ty...
Linux で MySQL データベースをアンインストールするにはどうすればいいですか? 以下では、...
CSS (カスケーディング スタイル シート) は、HTML Web ページを美しくするために使用さ...
ポーリングアルゴリズムの紹介多くの人が職場で nginx を使用しており、その設定に精通しています。...
まとめシナリオによっては、レコードがない場合は挿入し、レコードがある場合は更新するという要件がある場...
MySQL トランザクション サポートは、MySQL サーバー自体にバインドされているのではなく、ス...
モバイル側では、フレックスレイアウトが非常に便利です。デバイスの幅に応じてコンテナの幅を自動的に調整...
IE 8 以降では互換モードが追加され、これを有効にすると IE の下位バージョンでレンダリングされ...
これまでの記事はすべて私自身の学習記録であり、主に以前に遭遇した落とし穴を忘れないようにするためのも...
目次1. Bootstrap5 ブレークポイント1.1 モバイルファースト1.2 ブートストラップブ...
MySQLデータベースをインストールするa) MySQL ソースインストールパッケージをダウンロード...