この記事の例では、リストのシームレスなスクロールを実現するための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 データベースを強制終了します (推奨)
目次 はじめに 同期 非同期とブロッキング JavaScript のノンブロッキング コールバック ...
序文クラスメートが MLSQL Stack のストリーミング サポートを調査しています。そこで、フロ...
VMware Toolsをインストールすると、仮想マシンホスト間で①テキストをコピーして貼り付けるこ...
アイデア: 最初にランダムに並べ替えてからグループ化します。 1. テーブルを作成します。 テーブル...
今日は、CSS3 の transition-delay 属性のデフォルト値 0 に単位がないのは無効...
注意: 他のマシン (IP) は、承認なしではクライアント経由で MySQL データベースに接続でき...
質問:最近、プロジェクトを展開すると文字化けしたデータが出てきました。確認したところ、プロジェクトは...
MySQL ストアド プロシージャ、カーソル、トランザクションの例の詳細な説明以下は私が作成した M...
1 システムのインストール手順OSバージョン:1804イメージのダウンロード: http://cd...
目次概要同一生成元ポリシー (SOP)相同制限クロスドメインをバイパスクロスサイトリクエストフォージ...
MySQL 6.1.3 をベースにした 8.0.13 をインストールします。 MySQL 8.0....
目次序文provide/inject を通じて Vuex 関数を実装する方法このプラグインをアプリケ...
目次1. プロキシとは何ですか? 2. 使い方は? 1. プロキシを使用する簡単な例2. 対象オブジ...
メインのオペレーティング システムを Windows から Ubuntu に切り替えたとき、最初に考...