js動畫方式改變div尺寸程式碼例項

admin發表於2017-04-15

分享一段程式碼例項,它實現了使用js動態改變div元素尺寸的功能。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<style>
#antzone {
  height: 100px;
  width: 100px;
  background: #f00;
  position: absolute;
  top: 30px;
  left: 0;
}
</style>
<script>
window.onload=function(){
  var oDiv = document.getElementById("antzone")
  //封裝getStyle函式
  function getStyle(obj, attr) {
    if (obj.currentStyle) {
      return obj.currentStyle[attr];
    } else {
      return getComputedStyle(obj, false)[attr];
    }
  }
  //封裝startMove函式
  function startMove(obj, json, fn) {
    clearInterval(obj.timer);
    obj.timer = setInterval(function () {
      var bTag = true;
      for (var attr in json) {
        if (attr == "opacity") {
          var iCur = getStyle(obj, attr) * 100;
        } else {
          var iCur = parseInt(getStyle(obj, attr));
        }
        var iSpeed = (json[attr] - iCur) / 8;
        iSpeed > 0 ? iSpeed = Math.ceil(iSpeed) : iSpeed = Math.floor(iSpeed);
        if (attr == "opacity") {
          obj.style.opacity = (iCur + iSpeed) / 100;
          obj.style.filter = "alpha(opacity=" + (iCur + iSpeed) + ")";
        } else {
          obj.style[attr] = iCur + iSpeed + "px";
        }
        if (iCur != json[attr]) {
          bTag = false;
        }
      }
      if (bTag == true) {
        clearInterval(obj.timer);
        if (fn) {
          fn();
        }
      }
    }, 30);
  }
 
  var btn = document.getElementById("btn");
  btn.onclick = function () {
    startMove(oDiv, { "height": 500 }, function () {
      startMove(oDiv, { "width": 500 })
    });
  }
}
  </script>
</head>
<body>
  <div id="antzone"></div>
  <button id="btn">檢視演示</button>
</body>
</html>

相關文章