ネイティブ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 の中国語文字化け問題の解決方法

1. LinuxのMySQLで中国語の文字化けが発生する。以下の操作を実行する。 vi /etc/m...

Gitコミットログの変更方法のまとめ

ケース1: 最後の提出とプッシュなし次のコマンドを実行します。 git コミット --amend g...

mysqladmin を使用して MySQL インスタンスの現在の TPS と QPS を取得する方法

mysqladmin は管理と操作を行う公式の mysql クライアント プログラムです。MySQL...

入力が正しいにもかかわらず、MySQL 8.0 でアクセスが拒否される問題を解決する

最近、MySQL を学び始めました。インストールはスムーズに進み、インターネット上の既成のチュートリ...

CSS 読み込み効果の実装 パックマン

えーっと、名前はただの推測です 2333序文これは練習用の CSS デモです。何か間違っている点があ...

同じ日の最初の3つのデータを取得するためのMySQLタイムラインデータ

テーブルデータを作成する テーブル `praise_info` を作成します ( `id` bigi...

CSS を使用して 3 列レイアウトを実装するサンプル コード。中央の列は適応型で、テキスト サイズに応じて幅が変わります。

Baiduのインタビューで遭遇する質問は、次のレイアウト効果を達成する必要がある。 中央の紫色の列...

HTML テーブル マークアップ チュートリアル (5): ライト ボーダー カラー属性 BORDERCOLORLIGHT

表では、左上の境界線の色を個別に定義したり、セルの右下の境界線の色を定義したりできます。これら 2 ...

設定ファイルを変更した後、操作を再開します

余計なことは言わないで、コードだけ見てみましょう〜 # docker-compose をダウン # ...

Vue イベントの $event パラメータ = イベント値の場合

テンプレート <el-table :data="データリスト"> &...

Nodejs エラー処理プロセス記録

この記事では、接続エラー ECONNREFUSED を例に、Node.js がエラーを処理するプロセ...

mysql-connector-java8.0.27 へのアップグレードに関する注意事項

最近、オンライン セキュリティ スキャンにより、MySQL コネクタに脆弱性が見つかりました。確認し...

CSS における px、em、rem、pt の特徴、違い、変換について詳しく説明します。

コンセプト紹介: 1. px (ピクセル):仮想的な長さの単位で、コンピュータ システムのデジタル画...

Tomcat の一般的な例外と解決コードの例

弊社のプロジェクトは Java で開発され、ミドルウェアは Tomcat でした。運用中に、Tomc...

JavaScript offsetParent のケーススタディ

1. offsetParentの定義: offsetParentは子要素に最も近い位置に配置された親...