JavaScript 手ぶれ補正のケーススタディ

JavaScript 手ぶれ補正のケーススタディ

原理

手ぶれ補正の原理は、イベントをトリガーすることはできますが、イベントがトリガーされてから n 秒後に実行する必要があるというものです。イベントがトリガーされてから n 秒以内にこのイベントを再度トリガーすると、新しいイベントの時間を基準にして、n 秒後に実行します。つまり、イベントがトリガーされ、n 秒以内にそれ以上イベントがトリガーされなくなるまで実行されません。

場合

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<ヘッド>
    <メタ文字セット="utf-8">
    <meta http-equiv="x-ua-compatible" content="IE=edge, chrome=1">
    <title>デバウンス</title>
    <スタイル>
        * {
            マージン: 0;
            パディング: 0;
        }
        #容器 {
            幅: 100%;
            高さ: 200px;
            行の高さ: 200px;
            テキスト配置: 中央;
            色: #fff;
            背景色: #444;
            フォントサイズ: 30px;
        }
    </スタイル>
</head>
<本文>
    <div id="コンテナ"></div>
    <script src="debounce.js"></script>
</本文>
</html>
関数 getUserAction(e) {
    console.log(これを);
    コンソールログ(e);
    コンテナ内のHTML要素の数。
};
関数デバウンス(func, wait) {
    var タイムアウト;
    関数を返す(){
        タイムアウトをクリアします(タイムアウト);
        タイムアウト = setTimeout(() => {
            func.apply(this, arguments); // this とイベントオブジェクトイベントを解決します
        }、 待って);
    }
}
コンテナの onmousemove をデバウンスします (getUserAction、1000)。 

JavaScript 手ぶれ補正のケーススタディに関するこの記事はこれで終わりです。JavaScript 手ぶれ補正に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • JS 手ぶれ補正機能の実装と使用シナリオ
  • JavaScript のデシェイクとスロットリングの例
  • JS 関数のアンチシェイクと関数スロットリングを理解する方法
  • Javascript スロットル関数とデバウンス関数
  • JavaScript のアンチシェイクとスロットリングで発生した奇妙な問題と解決策
  • 面接でJavaScriptのスロットリングとデシェイク関数を手書きする方法
  • js スロットリングとアンチシェイクの適用シナリオと、vue でのスロットリングとアンチシェイクの具体的な実装
  • JavaScript スロットリングと手ぶれ補正機能についての簡単な説明

<<:  NginxにおけるRewriteのリダイレクト設定と実践の詳しい解説

>>:  MySQLは間違ったパスワードを入力する試行回数を制御します

推薦する

異なるインデックスを更新してMySQLのデッドロックルーチンを解決する

前回の記事では、ソース コードを使用してロック関連の情報をデバッグする方法を紹介しました。ここでは、...

HTML+CSSで充電水滴融合特殊効果コードを実現

目次序文:成し遂げる:要約:まず効果を見てみましょう: 序文:このアイデアは、Bilibili のア...

Linux システムで時間を取得して使用する方法

Linux システム時間には 2 種類あります。 (1)暦上の時刻。値は、指定された時刻、1970 ...

Docker で MySQL マスターとスレーブをデプロイする方法

画像をダウンロードMySQLイメージの選択 docker 検索 mysql MySQL 5.7 イメ...

mysql8.0.11データディレクトリ移行の実装

mysql のデフォルトのストレージ ディレクトリは/var/lib/mysql/です。以下は、デフ...

CentOS7 は Docker のバージョン 19 をデプロイします (簡単なので、従ってください)

1. 依存パッケージをインストールする [root@localhost ~]# yum insta...

JS配列インデックス検出におけるデータ型の問題の詳細な説明

WeChat アプレット プロジェクトを書いていたとき、その中に「都市選択」機能がありました。作者は...

純粋なテキストとアイコン付きのボタンを実現するための HTML+CSS

この記事では、いくつかの基本的なページ要素の実装方法をまとめており、後で更新される予定です。まず、私...

MySQL の基本: グループ化関数、集計関数、グループ化クエリの詳細な説明

目次1. 使い方が簡単2. DISTINCTを使用して重複を削除する3. COUNT()の詳細な紹介...

Ubuntu でホームディレクトリを新しいパーティションに移行する詳細なチュートリアル

ユーザーのホーム ディレクトリがどんどん大きくなってきたら、ホーム ディレクトリを新しいパーティショ...

MySQL 8.0.22 圧縮パッケージの完全なインストールと構成のチュートリアル図 (テスト済みで効果的)

1. zipインストールパッケージをダウンロードするMySQL サーバー 8.0.22 の圧縮パッ...

Ubuntu 18.04 で apt-get ソースを変更する方法

apt-get を使用してインストールすると、非常に遅くなります。国内のソースを変更すると、この問題...

Docker MQTT のインストールと使用のチュートリアル

MQTT の紹介MQTT (Message Queuing Telemetry Transport)...

DockerはPruneコマンドを使用してnoneイメージをクリーンアップします

目次無イメージの創造と混乱Noneオブジェクトをクリーンアップする方法トリムミラーコンテナで使用され...

CSSを使用して、頻繁に表示される奇妙なボタンを簡単に実装します。

背景グループでは、CSS を使用してインセット コーナー ボタンを実装する方法や、矢印付きのボタンを...