ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript での複数オブジェクトの移動のコード例

JavaScript での複数オブジェクトの移動のコード例

不言
不言オリジナル
2018-08-31 11:14:161342ブラウズ

この記事の内容は JavaScript でのマルチオブジェクト移動のサンプルコードです。必要な方は参考にしていただければ幸いです。

以前は、単一のオブジェクトの動きを実現するためにタイマーを使用していましたが、プロジェクトでは、単一のオブジェクトを動かすのではなく、複数のオブジェクトの複数の値を変更することがよくありました。
ここではパラメータを変更することで複数のオブジェクトと任意の値の動きを実現します。オブジェクトの幅、高さ、境界線、フォント サイズ、透明度などを変更できるモーション フレームワーク。

: 上記の章では、使用方法が簡単であるため、すべて offsetWidth (offsetWidth にはボーダー、パディングなどが含まれます) を使用してスタイルを設定および取得していますが、オブジェクトにボーダーやパディングなどのスタイルが含まれている場合は、エラーが報告されるため、ここではより厳密なメソッド currentStyle と getComputedStyle を使用してスタイルを取得します。
: 実際にはコンピューターにいくつかの特定の値を保存することはできません。最終結果は 7 ではないため、以下では四捨五入して整数に変換します。
注意: 複数のオブジェクトが移動している場合、タイマーと一部のパラメータを共有してはなりません。共有しないと、移動が完了する前にクリアされ、他の移動がトリガーされ、一部のパラメータが共有されなくなります。一定値に達すると再動作します。したがって、次の例のタイマーは要素に配置されます。

以下は私たちが作った例です

<!DOCTYPE html>
<html>

<head>
  <title>运动改变宽度、高度、边框、字体、透明度</title>
  <style>
    div {
      width: 200px;
      height: 200px;
      background: red;
      margin: 10px;
      float: left;
      border:1px solid #000;
      font-size:14px;
    }
    div:nth-child(5) {
      filter: alpha(opacity:30);
      opacity:0.3;
    }
  </style>
  <script>
    window.onload = function() {
      var oDiv1 = document.getElementById("div1");
      var oDiv2 = document.getElementById("div2");
      var oDiv3 = document.getElementById("div3");
      var oDiv4 = document.getElementById("div4");
      var oDiv5 = document.getElementById("div5");
      oDiv1.onmouseover=function(){
        startMove(this,"height", 400)
      }
      oDiv1.onmouseout=function(){
        startMove(this,"height", 200)
      }
      oDiv2.onmouseover=function(){
        startMove(this,"width", 400)
      }
      oDiv2.onmouseout=function(){
        startMove(this, "width",200)
      }
      oDiv3.onmouseover=function(){
        startMove(this,"fontSize", 50)
      }
      oDiv3.onmouseout=function(){
        startMove(this, "fontSize",14)
      }

      oDiv4.onmouseover=function(){
        startMove(this,"borderWidth", 100)
      }
      oDiv4.onmouseout=function(){
        startMove(this, "borderWidth",1)
      }
      oDiv5.onmouseover=function(){
        startMove(this,"opacity", 100)
      }
      oDiv5.onmouseout=function(){
        startMove(this, "opacity",30)
      }
    }

    function getStyle(obj,name){
      if(obj.currentStyle){
        return obj.currentStyle[name];
      }
      else{
        return getComputedStyle(obj,false)[name];
      }
    }

    function startMove(obj, attr, iTarget) {
      clearInterval(obj.timer);
      obj.timer = setInterval(function() {
        var cur=0;
        if(attr==="opacity"){
          cur=Math.round(parseFloat(getStyle(obj,attr))*100);//有可能会出现误差0.07*100
        }
        else{
          cur=parseInt(getStyle(obj,attr));
        }
        var speed = (iTarget - cur) / 6;
        speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
        if (cur === iTarget) {
          clearInterval(obj.timer);
        } else {
          if(attr==="opacity"){
            obj.style.filter="alpha(opacity:"+cur+speed+")";
            obj.style.opacity=(cur+speed)/100;
          }else{
            obj.style[attr]=cur+speed+"px";
          }
        }
      }, 30)
    }
  </script>
</head>

<body>
  <div id="div1">变宽</div>
  <div id="div2">变高</div>
  <div id="div3">文字变大</div>
  <div id="div4">borderwidth</div>
  <div id="div5">透明度</div>
</body>

</html>

関連する推奨事項:

Javascriptマルチオブジェクト移動実装方法分析_JavaScriptスキル

マルチオブジェクト移動のJS実装例共有

以上がJavaScript での複数オブジェクトの移動のコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。