安定一般的なクラシックアプリケーション: アコーディオン効果 導入手ぶれ補正機能のないウェブサイト: 手ぶれ補正機能のあるウェブサイト: 手ぶれ補正シーン1(マウスの動き込み)ジッター: ユーザーはこのインタラクションをトリガーするつもりはありませんが、偶発的なマウスのジッターによりインタラクション イベントが誤ってトリガーされます。 機能アンチシェイク: ユーザーがイベントを連続して複数回トリガーした場合、最後のイベントのみが実行されます。 解決原理: タイマーをオンにします。間隔内にイベントが複数回トリガーされた場合は、そのたびに前のタイマーをクリアします。 例とソリューションコード: <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8" /> <title>アニメーション事例「アコーディオン」</title> <スタイル> * { マージン: 0; パディング: 0; } ul { リストスタイル: なし; 幅: 2400ピクセル; } #箱 { 幅: 1200ピクセル; 高さ: 400px; 境界線: 1px 実線の赤; マージン: 100px 自動; オーバーフロー: 非表示; } #ボックスli { 幅: 100ピクセル; 高さ: 400px; フロート: 左; 遷移: すべて 0.5 秒のイーズアウト。 } #ボックスli.over { 幅: 800ピクセル; } </スタイル> </head> <本文> <div id="ボックス"> <ul> <li v-for="(item,index) リスト内" :class="{over:overIndex == index}" @mouseenter="doEnter(index)"> <img :src="item" alt=""> </li> </ul> </div> <script src="./vue.js"></script> <スクリプト> アプリを新しいVue({ el:'#ボックス', データ:{ オーバーインデックス:0, リスト:[ './images/collapse/1.jpg', './images/collapse/2.jpg', './images/collapse/3.jpg', './images/collapse/4.jpg', './images/collapse/5.jpg', ]、 時間ID:null }, メソッド: { doEnter(インデックス){ /* 手ぶれ補正を有効にする*/ //1.1 最初に最後のタイマーをクリアし、この時間を参照として使用します clearTimeout(this.timeID) //1.2 タイマーを開始する(手ぶれ補正間隔) this.timeID = setTimeout(()=>{ this.overIndex = インデックス; },500) } }, }) </スクリプト> </本文> </html> 手ぶれ補正シーン2(キーボードのキー)典型的な応用シナリオ: 関連語の検索 <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <meta http-equiv="X-UA-compatible" content="ie=edge"> <title>ドキュメント</title> </head> <本文> <input type="text" placeholder="検索内容を入力してください"> <スクリプト> timeID = null とします。 document.querySelector('input').oninput = function(){ /* 手ぶれ補正機能 */ //(1) まず前回のタイマーをクリアするclearTimeout(timeID) //(2) 手ぶれ補正タイマーを有効にする timeID = setTimeout(() => { console.log( this.value ); }, 500); } </スクリプト> </本文> </html> 関数のスロットリングコンセプト: 高頻度イベントによって発生するパフォーマンスの問題を解決します。高頻度イベント: ページ内で、一部のイベントが非常に頻繁にトリガーされます。 解決策: ユーザーがイベントを連続して複数回トリガーした場合、指定された時間内にイベントは 1 回だけトリガーされます。 例とソリューションコード: <!DOCTYPE html> <html lang="ja"> <ヘッド> <メタ文字セット="UTF-8"> <meta name="viewport" content="width=デバイス幅、初期スケール=1.0"> <meta http-equiv="X-UA-compatible" content="ie=edge"> <title>ドキュメント</title> <スタイル> 体{ 高さ: 3000ピクセル; } </スタイル> </head> <本文> <スクリプト> lastTime を null にします。 i = 1 とします。 window.onmousemove = 関数(){ /* 関数のスロットリング */ //(1) 2つのトリガーイベント間の時間間隔を決定する let time = Date.now() if( 時間 - 最終時刻 >= 500 ){ console.log('マウスの移動回数: ' + i++); //(2) このトリガー時刻は次の参照間隔として使用されます lastTime = time } } // j = 1 とします。 // window.onscroll = function(){ // //(1) 2つのトリガーイベント間の時間間隔を決定する// let time = Date.now() // if( 時間 - lastTime >= 500 ){ // console.log('マウスのスクロール回数: ' + j++); // //(2) このトリガー時刻は次回の参照間隔として使用されます // lastTime = time // } // } </スクリプト> </本文> </html> 上記は、Web プロジェクト開発における JS 機能の手ぶれ防止とスロットリングのサンプル コードの詳細です。Web プロジェクトにおける JS 機能の手ぶれ防止とスロットリングの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: MySQLはgroup_concat()関数に基づいて複数のデータ行を結合します
>>: Mac 環境での Nginx 構成とローカル静的リソースへのアクセスの実装
コードをコピーコードは次のとおりです。 <hr style="width:490px...
解決策は次のとおりです。 1. コンテナを強制削除する docker rm -f ジェンキンス2. ...
目次1. 基本2. 問題の説明3. 解決策付録: js を使用して Excel の日付形式を変換する...
最近何もすることがないのでCSSをいじっていますより良いアニメーションライブラリTweenMaxを見...
1. 何ですかRefs 、コンピューターでは Resilient File System (ReF...
目次解決された主な問題1. バックエンドから返され、バックエンドに送信されるデータは、次の形式になり...
1. [admin@JD ~]$ cd opt #ルートディレクトリにoptと入力2. [admin...
目次1. 概要1.1 厳密モードとは何ですか? 1.2 厳密モードの目的2. 厳密モードを有効にする...
DREAMWEAVER を開き、新しい HTML を作成します。 。ボディの特性: bgcolor...
目次リストレンダリングキーの原理と機能主要原則の分析キーの役割要約するリストレンダリングキーの原理と...
目次1. JavaScriptはページ内のすべてのHTML要素を変更できる1. IDでHTML要素を...
この記事では、パスワードボックスの検証情報を実装するためのJavaScriptの具体的なコードを例と...
XMLファイルは、可能な限りutf-8でエンコードする必要があります。gb2312には、?など、保存...
前回の記事で、mysqldump バックアップ ファイルに記録されるタイムスタンプ データは UTC...