スローモーションアニメーション効果を実現するJavaScript

スローモーションアニメーション効果を実現するJavaScript

この記事では、スローモーションアニメーション効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。具体的な内容は次のとおりです。

実装のアイデア

1. setIntervalタイミング関数を主に使用
2.アニメーションが必要な要素に絶対位置とオフセットを追加し、その親要素は相対的に配置する必要があることに注意してください。
3. 複数の要素にアニメーションを実行するには、アニメーションコードを関数にカプセル化します。
4. 要素はタイミング関数を呼び出して、一定の時間で移動します。タイミング関数では、各移動の距離を計算する式は次のとおりです: var step = (target - obj.offsetLeft) / 20;
objアニメーションオブジェクト、ターゲットターゲット左オフセット、20はアニメーションの速度を制御します。値が大きいほど遅くなり、値が小さいほど速くなります。
5. タイミング関数はコールバック関数を受け取ることもできます。コールバック関数がある場合は、アニメーションが終了したときにコールバック関数が実行されます。
6. アニメーションをクリアするコードはタイミング関数の先頭に記述する必要があることに注意してください - - -clearInterval(obj.timer); そうしないと、要素アニメーションがトリガーされるたびに効果が重ね合わされます。前のアニメーション効果をクリアするコードを記述します。

コードサンプル

<!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>
    <スタイル>
        * {
            マージン: 0;
            パディング: 0;
        }
        
        。コンテンツ {
            幅: 1000ピクセル;
            マージン: 0 自動;
        }
        
        ボタン {
            パディング: 5px;
            マージン: 60px 10px;
            境界線: 1px 実線 #666;
            アウトライン色: 淡いバイオレットレッド;
        }
        
        。両方 {
            背景色: ピンク;
            色: #fff;
            背景色: 淡い紫赤;
        }
        
        。箱 {
            位置: 相対的;
            高さ: 210px;
            マージン: 0px 自動;
            背景色: #191b28;
        }
        
        .yutu{
            位置: 絶対;
            上: 0;
            左: 0;
            幅: 180ピクセル;
            高さ: 210px;
        }
        
        .qiaojingjing
            位置: 絶対;
            上: 0;
            左: 820ピクセル;
            幅: 180ピクセル;
            高さ: 210px;
        }
        
        .word1 {
            表示: なし;
            位置: 絶対;
            上: -50px;
            左: 45%;
        }
        
        .word2 {
            表示: なし;
            位置: 絶対;
            上: -30px;
            左: 50%;
        }
    </スタイル>
</head>

<本文>
    <div class="content">
        <button class="btn1">道を進む</button>
        <button class="btn2">喬静静が前進</button>
        <button class="both">両方向に走る</button>
        <button class="btn3">帰り道</button>
        <button class="btn4">喬静静が戻る</button>
        <div class="box">
            <img src="images/于途.png" alt="" class="yutu">
            <img src="images/乔晶晶.png" alt="" class="qiaojingjing">
            <span class="word1">どうぞ、生涯のご指導を賜りますようお願い申し上げます。 </span>
            <span class="word2">どうぞ、生涯のご指導を賜りますようお願い申し上げます。 </span>
        </div>
    </div>

    <スクリプト>
        var btn1 = document.querySelector('.btn1');
        var btn2 = document.querySelector('.btn2');
        var btn3 = document.querySelector('.btn3');
        var btn4 = document.querySelector('.btn4');
        var both = document.querySelector('.both');
        var yutu = document.querySelector('.yutu');
        var qiaojingjing = document.querySelector('.qiaojingjing');
        var word1 = document.querySelector('.word1');
        var word2 = document.querySelector('.word2');


        btn1.addEventListener('クリック', 関数() {
            アニメーション(yutu, 340, 関数() {
                word1.style.display = 'ブロック';
            });
        });

        btn2.addEventListener('クリック', 関数() {
            アニメーション(qiaojingjing, 520, function() {
                word2.style.display = 'ブロック';
            });
        });
        btn3.addEventListener('クリック', 関数() {
            アニメーション(yutu, 0, 関数() {
                word1.style.display = 'なし';
            });
        });

        btn4.addEventListener('クリック', 関数() {
            アニメーション(qiaojingjing, 820, function() {
                word2.style.display = 'なし';
            });
        });

        both.addEventListener('click', 関数() {
            アニメート(yutu, 340);
            アニメート(qiaojingjing, 520);
            word1.style.display = 'ブロック';
            word2.style.display = 'ブロック';

        });


        // アニメーション関数 obj アニメーションオブジェクト、ターゲット ターゲットの左オフセット、コールバック コールバック関数 function animate(obj, target, callback) {
            // 前のアニメーションをクリアします clearInterval(obj.timer);
            obj.timer = setInterval(関数() {
                // 各移動の距離を計算します var step = (target - obj.offsetLeft) / 20;
                // ステップ数を丸めます step = step > 0 ? Math.ceil(step) : Math.floor(step);
                obj.style.left = obj.offsetLeft + ステップ + 'px';

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

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

</html>

アニメーション効果:

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

以下もご興味があるかもしれません:
  • JavaScript は左右のスローアニメーション機能を実装します
  • JavaScriptスローモーションアニメーション機能のカプセル化方法
  • スローモーションアニメーションを実現するjs
  • スローモーションアニメーションを実現するJavaScript
  • Tween.js イージング トゥイーン アニメーション アルゴリズムの例
  • jsはゆっくりとしたアニメーションでナビゲーションバー効果を実現します
  • JavaScript はスローモーションアニメーションのカプセル化と使用法を説明します

<<:  MySQL でレプリケーション フィルターを動的に変更する方法

>>:  Docker データボリュームの一般的な操作コードの例

推薦する

CSS 動的読み込みバー効果のサンプルコード

CSS変数の知識を使って、追加したコードとコメントを直接投稿します <!DOCTYPE htm...

RHCE ブリッジング、パスワード不要のログイン、ポート番号の変更の概要

目次1. ブリッジを設定し、検証のためにパケットをキャプチャする1. ブリッジデバイスとセッションを...

MySQLの自己接続と結合の詳細な理解

1. MySQL 自己接続MySQL では、情報を照会するときに自分自身に接続 (自己接続) する必...

自作メニューをクリックする効果を実現するJavaScript

この記事では、自作メニューをクリックする効果を実現するためのJavaScriptの具体的なコードを参...

Zabbixで電子メールアラートを実装する方法

オンラインチュートリアルに従って実装しました。 zabbix3.4、スクリプトとsendEmailを...

MySql で、存在しない場合は挿入し、存在する場合は更新する方法

まとめシナリオによっては、レコードがない場合は挿入し、レコードがある場合は更新するという要件がある場...

MySQL における Datetime と Timestamp の使用の概要

目次1. MySQL で現在の時刻を表現するにはどうすればよいでしょうか? 2. TIMESTAMP...

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

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

CSS シャドウ効果の比較: ドロップシャドウとボックスシャドウ

Drop-shadow と box-shadow はどちらも影効果(ハロー効果)のための CSS プ...

MySQLクエリの基本的なクエリ操作の学習

序文MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーショ...

Vueバスの簡単な使い方

Vueバスの簡単な使い方シナリオの説明:コンポーネント A にはコンポーネント B と C が含まれ...

MySQLでANDとORを組み合わせる問題を解決する

以下のように表示されます。 SELECT prod_name,prod_price FROM pro...

Vueストレージにはブール値のソリューションが含まれています

Vueはブール値でストレージを保存します今日、問題に遭遇しました。バックグラウンドから返された真偽の...

CSS3 カウントダウン効果

成果を達成する実装コードhtml <div クラス = 'ラッパー'> ...