最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript運(yùn)動(dòng)框架 鏈?zhǔn)竭\(yùn)動(dòng)到完美運(yùn)動(dòng)(五)

 更新時(shí)間:2022年05月08日 10:48:57   作者:GY_U_YG  
這篇文章主要為大家詳細(xì)介紹了JavaScript運(yùn)動(dòng)框架的第五部分,鏈?zhǔn)竭\(yùn)動(dòng)到完美運(yùn)動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

基于前幾篇的運(yùn)動(dòng)框架基礎(chǔ),本文主要講解一下鏈?zhǔn)竭\(yùn)動(dòng),就是運(yùn)動(dòng)完后接著再運(yùn)動(dòng),比如很多網(wǎng)站中,一個(gè)方框的出現(xiàn)和退出:出現(xiàn)時(shí)先變寬再變高,退出時(shí)先變矮再變窄退出!
之前的模型是:

startMove(obj, json);

現(xiàn)在改為:

startMove(obj, json, fn);

也就是在第一次運(yùn)動(dòng)結(jié)束的時(shí)候執(zhí)行fn(); fn是傳過(guò)來(lái)的一個(gè)參數(shù),這個(gè)參數(shù)是個(gè)函數(shù),定時(shí)器清理之后手動(dòng)運(yùn)行fn();如果想采用鏈?zhǔn)竭\(yùn)動(dòng),那就是在fn中再調(diào)用startMove(obj, json, fn),再在里面的fn中調(diào)用startMove(obj, json, fn),可以一直玩下去

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>運(yùn)動(dòng)框架(五):鏈?zhǔn)竭\(yùn)動(dòng)到完美運(yùn)動(dòng)</title>
  <style type="text/css">
    div {
      width: 100px;
      height: 100px;
      background: orange;
      margin: 10px;
      float: left;
    }
  </style>
</head>
<body>
  <div id="div1"></div>

  <script type="text/javascript">
    var oDiv = document.getElementById('div1');
    oDiv.onmouseover = function() {
      startMove(oDiv, {width:300,opacity:30}, function() {
        startMove(oDiv, {height:500});
      });
    };
    oDiv.onmouseout = function() {
      startMove(oDiv, {height:100}, function() {
        startMove(oDiv, {width:100,opacity:100});
      })
    };

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

    function startMove(obj, json, fn) {
      clearInterval(obj.timer);
      obj.timer = setInterval(function() {
        var bStop = true;
        for (var attr in json) {
          var cur = 0;
          if (attr === 'opacity') {
            cur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
          } else {
            cur = parseInt(getStyle(obj, attr));
          }
          if (cur != json[attr]) {
            bStop = false;
          }
          var speed = (json[attr] - cur)/10;
          speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
          cur += speed;
          if (attr === 'opacity') {
            obj.style.filter = 'alpha(opacity:' + cur + ')';
            obj.style.opacity = cur/100;
          } else {
            obj.style[attr] = cur + 'px';
          }

        }
        if (bStop) {
          clearInterval(obj.timer);
          if (fn) fn();
        }

      }, 30);
    }
  </script>
</body>
</html>

最后提取出來(lái)的完美運(yùn)動(dòng)框架如下,motionFrame.js:

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

function startMove(obj, json, fn) {
  clearInterval(obj.timer);
  obj.timer = setInterval(function() {
    var bStop = true;
    for (var attr in json) {
      var cur = 0;
      if (attr === 'opacity') {
        cur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
      } else {
        cur = parseInt(getStyle(obj, attr));
      }
      if (cur != json[attr]) {
        bStop = false;
      }
      var speed = (json[attr] - cur)/10;
      speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
      cur += speed;
      if (attr === 'opacity') {
        obj.style.filter = 'alpha(opacity:' + cur + ')';
        obj.style.opacity = cur/100;
      } else {
        obj.style[attr] = cur + 'px';
      }

    }
    if (bStop) {
      clearInterval(obj.timer);
      if (fn) fn();
    }

  }, 30);
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

比如县| 灵璧县| 桃江县| 阜新| 团风县| 金乡县| 承德市| 竹山县| 治多县| 沁水县| 和平区| 顺平县| 巴林左旗| 锡林郭勒盟| 崇阳县| 仁寿县| 曲松县| 灵丘县| 兴安盟| 武威市| 新田县| 福泉市| 会同县| 沛县| 石楼县| 南平市| 安庆市| 金昌市| 墨江| 遵义县| 龙江县| 黄冈市| 花莲市| 枞阳县| 洪湖市| 读书| 平果县| 游戏| 滁州市| 卢氏县| 潢川县|