均一なアニメーション効果を実現するJavaScript

均一なアニメーション効果を実現するJavaScript

この記事の例では、JavaScriptで等速アニメーションを実装するための具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

実装のアイデア:

1. アニメーション効果を実現するために、主にタイミング関数setInterval()を使用します。
2. アニメーションを関数にカプセル化して、繰り返し記述することなく複数の要素から呼び出すことができる。
3. アニメーション関数は、要素オブジェクト、ターゲットオフセット、コールバック関数のパラメータを受け取ります。① 関数内にタイミング関数を追加し、タイミング関数に名前を付け、後でタイミング関数をクリアするためにタイミング関数名を使用します。② タイミング関数内の処理プログラム:
a. 固定ステップ移動値を指定し、要素オブジェクトのオフセットが一定の速度で変化するように設定します - 例: obj.style.left = obj.offsetLeft + 5 + 'px';
b. オフセットが目標値に達したかどうかを判断し、達した場合はアニメーションを停止します - - -
タイマー間隔をクリアします。
そしてアニメーションが停止したら、コールバック関数があるかどうかを判断し、コールバック関数がある場合はコールバック関数を実行します。
4. アニメーション関数の先頭にクリア タイマー関数を追加して、前のアニメーション効果をクリアします - - -clearInterval(obj.timer);
アニメーションをトリガーするには、ボタンをクリックする必要がある場合があります。クリアボタンを追加しないと、アニメーション効果が重ね合わされ、ボタンを繰り返しクリックするとどんどん速くなります。
5. アニメーション関数を参照用のjsファイルにカプセル化することもできます。

ヒント:上記は 1 つの方法にすぎません。必要に応じてさまざまなアニメーション効果を調整できます。

コード例:

<!DOCTYPE html>
<html lang="ja">

<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>ユニフォームアニメーション</title>
    <スタイル>
        。箱 {
            位置: 相対的;
            幅: 1000ピクセル;
            上マージン: 20px;
        }
        
        .シャオフリ{
            位置: 絶対;
            上: 0;
            左: 0;
            幅: 150ピクセル;
            高さ: 150px;
        }
        
        .pikaqu {
            位置: 絶対;
            上: 150px;
            左: 0;
            幅: 200ピクセル;
            高さ: 150px;
        }
    </スタイル>
</head>

<本文>
    <button class="btn1">クリックすると小さなキツネが動きます</button>
    <button class="btn2">クリックしてピカチュウを移動します</button>
    <div class="box">
        <img src="images/little fox.jpg" alt="" class="xiaohuli">
        <img src="images/Pikachu.jpg" alt="" class="pikaqiu">
    </div>
    <スクリプト>
        var btn1 = document.querySelector('.btn1');
        var btn2 = document.querySelector('.btn2');
        var xiaohuli = document.querySelector('.xiaohuli');
        var pikaqiu = document.querySelector('.pikaqiu');

        btn1.addEventListener('クリック', 関数() {
            アニメーション(xiaohuli、300);
        })

        btn2.addEventListener('クリック', 関数() {
            アニメーション(ピカキウ、450);
        })

        // アニメーション関数 obj アニメーションオブジェクト、ターゲット ターゲットの左オフセット、コールバック コールバック関数 function animate(obj, target, callback) {
            タイマー間隔をクリアします。
            obj.timer = setInterval(関数() {

                obj.style.left = obj.offsetLeft + 5 + 'px';

                obj.offsetLeft >= ターゲットの場合 {
                    // アニメーションを停止します clearInterval(obj.timer);
                    // コールバック関数がある場合は、コールバック関数を実行します。if (callback) {
                        折り返し電話();
                    }
                }


            }, 30);
        }
    </スクリプト>
</本文>

</html>

ページ効果:

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JS div 均一速度移動アニメーションと可変速度移動アニメーションのコード例
  • JS は均一なスローモーションアニメーション効果のカプセル化の例を実装します
  • JS のオフセットと均一アニメーションの詳細な説明
  • JavaScript ユニフォームアニメーションとバッファアニメーションの詳細な説明
  • 統一された画像カルーセルアニメーションを実現するネイティブJS
  • ネイティブJavaScriptで均一なモーションアニメーション効果を実現

<<:  MySQL DDLステートメントの使用

>>:  Docker データボリュームコンテナの作成と使用状況分析

推薦する

jQuery ステップ進行軸プラグインの実装コード

毎日のjQueryプラグイン - ステップ進捗軸 ステップ進捗軸ツール系のサイトでは入門チュートリア...

Windows サーバー管理におけるセキュリティの考慮事項

ウェブサーバー1. Webサーバーは、wev、cgi、asp機能を無効にするなど、不要なIISコンポ...

MySQL データベースの操作とデータ型

目次1. データベース操作1.1 データベースの表示1.2 データベースを作成する1.3 データベー...

Windows 10 での mysql5.5 データベース コマンドラインの中国語文字化け問題を解決する

システムをリセットした後、かなり前にインストールした MySQL データベースのコンソール クエリで...

jsvc を使用して tomcat を起動する方法 (通常のユーザーとして実行)

jsvc の紹介実稼働環境では、Tomcat はデーモン モードで実行する必要があります。Tomc...

冗長カーネルを削除するLinuxディープインの実装方法

前の記事では、deepin linux に新しいカーネルを手動でインストールする方法について説明しま...

ネイティブ js でカスタム スクロール バーを実装する

この記事の例では、カスタムスクロールバーを実装するためのjsの具体的なコードを参考までに共有していま...

変数が空かどうかを判定するシェルの方法の概要

シェルで変数が空かどうかを判断する方法シェルプログラミングでは、パラメータのエラーチェック項目に、変...

Vueの監視プロパティの詳細

目次1.watchは一般的なデータ(数値、文字列、ブール値)の変更を監視します。 1. 数値2. 文...

React で setInterval 関数を使用する例

この記事はWindows 10のシステム環境をベースに、Reactの学習と使用について説明しています...

Dockerコンテナ内にkibanaトークナイザーをインストールする方法

ステップ: 1. 仮想マシンディレクトリに新しいdocker-compose.ymlファイルを作成し...

Dockerコンテナを閉じずに終了する方法の詳細な説明

Docker コンテナに入った後、コンテナを終了すると、コンテナは Exited 状態に変わります。...

Centos7はMySQLログに基づいてデータを復元するためのサンプルコードを実装します

導入Binlog ログ、つまりバイナリ ログ ファイルは、データベースに対するユーザー操作の SQL...

CSSアニメーションがJSによってブロックされるかどうかについての簡単な議論

CSS のアニメーション部分は JS によってブロックされますが、transform のアニメーショ...