均一なアニメーション効果を実現する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 データボリュームコンテナの作成と使用状況分析

推薦する

ウェブページ制作と饅頭の関係(体験の共有)

昨日は遅くまで寝ていて、一日中起きていました。私の年齢では、夜更かしして本を書くのはもう無理のようで...

CentOS8でルートパスワードを素早く変更する方法

Centos8仮想マシンを起動し、上下キーを押して図1のインターフェースの最初の行を選択します。図1...

MySQL 8.0 をインストールした後、初めてログインするときにパスワードを変更する問題を解決する

MySQL 8.0.16で初回ログイン時のパスワードを変更する方法を紹介します。 MySQLデータベ...

MySQL の完全バックアップとクイックリカバリ方法

過去 15 日間のデータをバックアップするシンプルな MySQL 完全バックアップ スクリプト。バッ...

Telnet は Alpine イメージの busybox-extras に移動されました

Alpine イメージの telnet はバージョン 3.7 以降、busybox-extras パ...

MySQL スロークエリ: スロークエリを有効にする

1. スロークエリの用途は何ですか? long_query_time を超えて実行されるすべての S...

HTMLフォームのいくつかの送信方法の概要

最も一般的で、最もよく使用され、最も一般的な方法は、submit タイプを使用することです。コードを...

HTML テーブルタグチュートリアル (7): 背景色属性 BGCOLOR

テーブルの背景色は、BGCOLOR 属性を通じて設定できます。基本的な構文<テーブル BGCO...

Hタグはウェブページ制作において適切に使用すべきである

HTML タグには、ページのタイトルを処理するための特別なタグがあります。これらは h1、h2、h3...

ウェブページのアクセス速度に関する主な問題と解決策

<br />ウェブサイトのアクセス速度はウェブサイトのトラフィックに直接影響を及ぼし、ウ...

HTML ハイパーリンク スタイル (4 つの異なる状態) の設定例

コードをコピーコードは次のとおりです。 <スタイル タイプ="text/css&qu...

チャットバブル効果を実現するCSS

1. レンダリングJD効果シミュレーション効果 2. 原則高さと幅が0のボックスを用意しますこのボ...

ウォーターフォールフローレイアウト(無限読み込み)を実現する js

この記事の例では、ウォーターフォールフローレイアウトを実装するためのjsの具体的なコードを参考までに...

docker --privileged=true パラメータの役割についての簡単な説明

バージョン 0.6 あたりで、Docker に privileged が導入されました。このパラメー...