ネイティブJSで様々なモーションの複合モーションを実現

ネイティブJSで様々なモーションの複合モーションを実現

この記事では、ネイティブ JS で実装された複合モーションを紹介します。複合モーションとは、異なる属性が同じ間隔で変化することを意味します。効果は次のとおりです。

実装コードは以下の通りです。コピー&ペースト、コメントなどご自由にどうぞ。

<!DOCTYPE html>
<html>
 
<ヘッド>
    <meta http-equiv="コンテンツタイプ" コンテンツ="text/html; charset=utf-8" />
    <title>ネイティブJSで様々なモーションの複合モーションを実現</title>
    <スタイル>
        #div1 {
            幅: 100ピクセル;
            高さ: 100px;
            背景: 赤;
            不透明度: 0.3;
        }
    </スタイル>
    <スクリプト>
        関数 getStyle(obj, attr) {
            (obj.currentStyle)の場合{
                obj.currentStyle[attr]を返します。
            } それ以外 {
                getComputedStyle(obj, false)[attr]を返します。
            }
        }
 
        関数 startMove(obj, json, fn) {
            タイマー間隔をクリアします。
            obj.timer = setInterval(関数() {
                //特定の値に達した後に他の値の変化が止まらないようにスイッチを設定します var bStop = true;
                for (var attr in json) {
                    var iCur = 0;
                    属性 == '不透明度' の場合 {
                        iCur = parseInt(parseFloat(getStyle(obj, attr)) * 100);
                    } それ以外 {
                        iCur = parseInt(getStyle(obj, attr));
                    };
                    var iSpeed ​​= (json[attr] - iCur) / 8;
                    iSpeed ​​= iSpeed ​​> 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
                    //特定の値に達していない場合、bStopはfalseになります
                    iCur != json[attr] の場合 {
                        bStop = false;
                    };
                    属性 == '不透明度' の場合 {
                        obj.style.filter = 'alpha(不透明度:' + (iCur + iSpeed) + ')';
                        obj.style.opacity = (iCur + iSpeed) / 100;
                    } それ以外 {
                        obj.style[attr] = iCur + iSpeed ​​+ 'px';
                    }
                }
 
                //ループの最後のラウンドでtrueの場合、タイマーはクリアされます if (bStop) {
                    タイマー間隔をクリアします。
                    もし(関数){
                        関数fn();
                    }
                }
            }, 30)
        }
    </スクリプト>
    <スクリプト>
        window.onload = 関数(){
 
            var oBtn = document.getElementById('btn1');
            var oDiv = document.getElementById('div1');
 
            oBtn.onclick = 関数 () {
 
                開始移動(oDiv, {
                    幅: 400,
                    高さ: 200,
                    不透明度: 100
                });
            };
        };
    </スクリプト>
</head>
 
<body style="background:#0F0;">
    <input id="btn1" type="button" value="エクササイズを開始" />
    <div id="div1"></div>
</本文>
 
</html>

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

以下もご興味があるかもしれません:
  • Python 機械学習 NLP 自然言語処理 Word2vec 映画レビュー モデリング
  • Python 機械学習 NLP 自然言語処理 基本操作 正確な単語分割
  • Python 機械学習 NLP 自然言語処理 基本操作 ニュース分類
  • Python 機械学習 NLP 自然言語処理 基本操作 キーワード
  • Python 機械学習 NLP 自然言語処理 基本操作 単語ベクトルモデル
  • Python 機械学習 NLP 自然言語処理 基本操作 家庭内暴力分類
  • Python NLPの簡単な紹介
  • Python 機械学習 NLP 自然言語処理 基本操作 映画レビュー 分析

<<:  Docker Swarmを使用してWordPressを構築する方法

>>:  CentOS7 に YUM 経由で MySQL 5.7 をインストールする詳細な手順

推薦する

構造とプレゼンテーションの分離を理解するためのWeb標準の学習

Web 標準について議論するときに必ず話題になるのは、構造とプレゼンテーションを分離することの重要性...

InnoDB の主な機能 - 挿入キャッシュ、2 度書き込み、適応ハッシュ インデックスの詳細

InnoDB ストレージ エンジンの主な機能には、挿入バッファ、二重書き込み、適応ハッシュインデック...

MySQL 8.0.23 のレプリケーション アーキテクチャにおけるスレーブ ノードの自動フェイルオーバー

私はしばらく MGR と連絡を取り合ってきました。MySQL 8.0.23 の登場により、MySQL...

MySQLリモートアクセスの設定方法をステップバイステップで説明します

序文MySQL データベースを使用する場合、クライアントはデータベース サーバーにリクエストを送信す...

FastApi+Vue+LayUIを使用してフロントエンドとバックエンドを分離するサンプルコード

目次序文プロジェクト設計後部フロントエンドプロジェクトを実行する質疑応答序文これまでの API 開発...

MySQL 8.0.12 インストール設定方法とパスワード変更

この記事ではMySQL 8.0.12のインストールと設定方法を参考までに記録します。具体的な内容は以...

Reactイベントバインディングの詳細な説明

1. 何ですかreactアプリケーションでは、イベント名はキャメルケース形式で記述されます。たとえ...

JavaScript の遅延読み込み属性パターンに関する簡単な説明

目次1. はじめに2. オンデマンド属性モード3. 乱雑な遅延読み込み属性パターン4. クラスの唯一...

CentOS 7 環境でソースコードから MySQL 5.7 をインストールする方法

この記事では、CentOS 7 環境でソース コードから MySQL 5.7 をインストールする方法...

Zabbix は MySQL インスタンス メソッドを監視します

1. 監視計画監視項目を作成する前に、何を監視するのか、どのように監視するのか、監視データをどのよう...

MySQLとRedisキャッシュ間の同期ソリューションについての簡単な説明

目次1. ソリューション 1 (UDF)デモケース2. ソリューション2(binlogの解析)キャナ...

Linuxでディスク使用量を確認する方法

1. dfコマンドを使用してディスク全体の使用量を表示します。 df コマンドは、ハードディスクのマ...

Linuxはシェルスクリプトを使用して履歴ログファイルを定期的に削除します

1. ツールディレクトリのファイル構造 [root@www tools]# ツリーツール/ ツール/...

少なくともn日間連続してログインしているユーザーに対するSQLクエリ

MySQL ツールを使用して、3 日間連続する例を見てみましょう。 1. SQL テーブルを作成しま...