ネイティブ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 をインストールする詳細な手順

推薦する

MySQL の計画タスクとイベント スケジュール例の分析

この記事では、例を使用して、MySQL の計画されたタスクとイベントのスケジュールについて説明します...

MySQL外部キーの基本的な機能と使用方法の詳細な説明

この記事では、例を使用して、MySQL 外部キーの基本的な機能と使用方法を説明します。ご参考までに、...

CSS BEM 記述標準の詳細な説明

BEM は、Web 開発に対するコンポーネントベースのアプローチです。ユーザー インターフェイスを独...

jsを使用してスライダーをドラッグする効果を実現します

この記事では、jsでスライダーをドラッグする方法の具体的なコードを参考までに共有します。具体的な内容...

Ubuntu 18.04 に VMware Tools をインストールする際のエラーを解決する

1. オンライン チュートリアルによると、Ubuntu 18.04 のインストールはまだ失敗します。...

React NativeのstartReactApplicationメソッドの簡単な分析

今回は、 RNの起動処理を整理しました。最後のstartReactApplication比較的複雑で...

IDEA に基づいて Tomcat サーバーを展開するための詳細な手順

目次導入ステップ1ステップ2: アイデアで動的Webプロジェクトを作成するステップ3: Tomcat...

jsは、州、市、地区の3レベルのリンクの非選択ドロップダウンボックスバージョンを実現します。

インターネットで3レベルリンクを検索したところ、すべてオプションで書かれていました。突然、別の方法で...

Vueでミックスインを使用する方法

目次序文使い方要約する序文Vue にはコードの再利用に使われる mixins という設定項目がありま...

Nginx10m+の高並列カーネル最適化に関する簡単な説明

高い同時実行性とは何ですか?デフォルトの Linux カーネル パラメータは、最も一般的なシナリオ向...

ウェブ開発者やデザイナーにとって欠かせないオンラインウェブツールとアプリケーション

これまでの記事で、フロントエンド開発者にとって必須のツール、スクリプト、リソースのコレクションを紹介...

CSSポジションの5つの異なる値の使い方の詳細な説明

位置プロパティposition プロパティは、要素に使用する配置方法のタイプ (静的、相対的、固定、...

同じドメイン名を持つ Nginx プロキシのフロントエンドとバックエンドの分離プロジェクトの完全な手順

フロントエンド プロジェクトとバックエンド プロジェクトは分離されており、フロントエンドとバックエン...

yum インストールエラーの問題を解決する 保護されたマルチライブラリバージョン

現在、クラウドサーバーに nginx をインストールする際、最初に zlib などの依存ライブラリを...

Vue3 の SetUp 関数のプロパティとコンテキスト パラメータの詳細な説明

1. setUp関数の最初のパラメータpropsセットアップ(プロパティ、コンテキスト){}最初のパ...