スローモーションアニメーション効果を実現する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 最適化のための my.ini 中国語構成スキームの詳細な説明: InnoDB、4GB メモリ、および複数のクエリ

この記事は、4G メモリ システム用の MySQL 構成ファイル ソリューションです (主に Inn...

CSS と JavaScript を使用して管理ダッシュボードのレイアウトを構築するためのサンプル コード

あなたが作成するものこの新しいチュートリアルでは、CSS と JavaScript を使用して、レス...

Vue3はJingdong製品詳細ページの虫眼鏡効果コンポーネントをカプセル化します

この記事では、Jingdong製品詳細ページの虫眼鏡効果コンポーネントに似たvue3カプセル化の具体...

MySQL 学習: 初心者のための 3 つのパラダイム

目次1. パラダイム基盤1.1 パラダイムの概念2. 3つの主要なパラダイム2.1 3つの主要なパラ...

CSSフローティングとフローティング解除について

フロートの定義要素を通常のドキュメント フローから外し、要素を左また​​は右に近づけます。親要素の端...

Webフロントエンド開発エンジニアが習得すべきコアスキル

Web フロントエンド開発に含まれる内容は、主に W3C 標準の構造、動作、パフォーマンスです。では...

TomcatはNginxリバースプロキシのクライアントドメイン名を取得します

質問Nginx リバース プロキシの後、Tomcat アプリケーションは、クライアント ブラウザーの...

Ubuntu 20.04 をインストールした後に行うべきこと (初心者向けガイド)

Ubuntu 20.04 がリリースされ、多くの新機能が導入されましたが、慣れていない機能も多くあ...

MySQLのスイッチングデータ保存ディレクトリの実装方法

MySQLのスイッチングデータ保存ディレクトリの実装方法今日、仕事中に、mysql が保存されている...

Linuxディレクトリ構造の詳細な紹介

Linuxを学び始めるときは、まずLinuxの標準ディレクトリ構造を理解する必要があります。 / r...

MySQL で制限を使用するとパフォーマンスに影響するのはなぜですか?

まず、MySQL のバージョンについて説明します。 mysql> バージョンを選択します();...

htmlハイパーリンクaのクリックイベントの後、hrefで指定されたアドレスにジャンプします。

場合によっては、ジャンプを完了するために href の代わりにハイパーリンク <a> を...

両端揃えレイアウトを実現する CSS 列のサンプルコード

1. 堂々巡りいろいろ試行錯誤した結果、均等割り付けレイアウトを実現する最も簡単な方法は CSS ...

JavaScript の 50 以上のユーティリティ関数の概要

JavaScript は多くの素晴らしい機能を備えています。この記事では、作業効率の向上とコードのデ...

HTML ページはダーク モードの実装をサポートします

2019年から、AndroidとiOSの両方のプラットフォームでダークモードが使用され始めました。も...