スローモーションアニメーション効果を実現する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データベースの追加、削除、変更操作の詳細な説明

データの挿入テーブル名(列名1、列名2、列名3)の値(値1、値2、値3)に挿入します。ユーザーに(u...

Linux でのマルチスレッドおよびマルチプロセス クラッシュのシミュレーションに関する簡単な説明

結論:マルチスレッド環境では、スレッドの 1 つがクラッシュすると、他のスレッド (プロセス全体) ...

CentOS 6 は Docker を使用して Redis マスター スレーブ データベース操作例を展開します

この記事では、Docker を使用して Centos6 に Redis マスター/スレーブ データベ...

デザイン理論:人間中心のグリーンデザイン

「人間中心」と「グリーンデザイン」という2つの視点から考える——デザイン業界の同僚とも議論する2つの...

MySQL DMLステートメントの使用に関する詳細な説明

序文:前回の記事では、注意深い学生であれば発見できたかもしれない DDL ステートメントの使用法を中...

CentOS 7 で MySQL 接続数が 214 に制限される問題の解決方法

問題を見つける最近、プロジェクトで問題が発生しました。接続が多すぎるため、「接続が多すぎます」という...

Vite2.x に基づく Vue 3.x プロジェクトの実装

Vue 3.x プロジェクトの作成 npm init @vitejs/app my-vue-app ...

Vue の計算プロパティ

目次1. 基本的な例2. 計算プロパティキャッシュとメソッド3. 計算プロパティセッター序文:通常、...

Vue.jsはカレンダー機能を実装します

この記事では、カレンダー機能を実装するためのVue.jsの具体的なコードを例として紹介します。具体的...

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

1. MySQL 5.7.11 zipインストールパッケージをダウンロードするこのマシンはwin7 ...

Docker Alibaba Cloud RocketMQ 4.5.1 のデプロイプロセスの詳細な説明

検索ミラー docker 検索 rocketmq画像バージョンを表示他の画像を表示したい場合は、画像...

Vueのカスタムディレクティブの詳細なガイド

目次1. カスタム指示とは何ですか? 2. 指示をカスタマイズする方法フック機能3. 応用シナリオ入...

Firefox で Webdings フォントをサポートする方法

Firefox、Opera、その他のブラウザは Webdings フォントをサポートしていません。回...

任意の長さの配列を作成または埋めるための JS のヒントの要約

目次序文直接充填方式for ループの push() メソッド配列コンストラクタメソッド配列コンストラ...

MySQL 8.0.13 zipパッケージのインストール方法について

MySQL 8.0.13 にはデフォルトでデータ フォルダがあります。このフォルダを削除する必要があ...