スローモーションアニメーション効果を実現する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 データボリュームの一般的な操作コードの例

推薦する

MySQL マスタースレーブ同期、トランザクションロールバックの実装原理

ビンログBinLog は、データベース テーブル構造の変更 (テーブルの作成、変更など) とテーブル...

MySQL に接続されている IP アドレスを表示する方法の例

具体的な方法:まずコマンドプロンプトを開きます。次に、[ mysql -u root -p ] コマ...

CentOS7 で yum を使用して PostgreSQL と PostGIS をインストールする方法

1. yumソースを更新するCentOS7 のデフォルトの yum リポジトリの PostgreSQ...

Centos 7にmysql5.7.24バイナリバージョンをインストールする方法と解決方法

MySQLバイナリのインストール方法mysqlをダウンロード参考: 1. パッケージを解凍する ta...

Html+CSS 描画三角形アイコン

まずはレンダリングを見てみましょう: XML/HTML コードコンテンツをクリップボードにコピー&l...

MySQL 8.0.22 のインストールと設定のグラフィックチュートリアル

MySQL8.0.22のインストールと設定(超詳細)参考までに、具体的な内容は次のとおりです。みなさ...

docker-compose が遅すぎる場合の解決策の詳細な説明

解決策はただ一つ、ソースを変更することです。 github からのソースは基本的にタイムアウトするの...

Vue.jsは画像切り替え機能を実装する

この記事では、画像切り替え機能を実装するためのVue.jsの具体的なコードを参考までに共有します。具...

Linux の総合システム監視ツール dstat の詳細な例

オールラウンドなシステム監視ツール dstat dstat は、vmstat、iostat、nets...

Mysql varchar型の合計操作例

友人の中には、データベースについて学習しているときに、テーブル構造を作成するときに誤ってフィールドを...

MySQL Bツリーインデックスとインデックス最適化の概要についての簡単な説明

MySQL の MyISAM エンジンと InnoDB エンジンはどちらもデフォルトで B+ ツリー...

Pycharm2017はpython3.6とmysqlの接続を実現します

この記事では、pycharm2017でpython3.6とmysqlを接続する方法を参考までに紹介し...

Youdaの新しいプチビューの実装

目次序文導入ライブ使いやすいルートスコープマウント要素の指定ライフサイクルコンポーネントグローバル状...

Nginx プロセス管理とリロードの原則の詳細な説明

プロセス構造図Nginx はマルチプロセス構造です。マルチプロセス構造は、次のような Nginx の...

Excel エクスポートは docker 環境では常に失敗する

Excel のエクスポートは、docker 環境では常に失敗します。最も直接的な原因は、中国語フォン...