原生js模拟jquery里的animate方法疑惑

下面是,从网上找来的一段原生js实现animate的方法:
但是我发现在IE/edge/苹果手机上,都不支持,在安卓和chrome却兼容的很好,网上也找了些资料,它里面已经做了兼容为什么还是不行呢?
附上原文链接:原文链接
调用方式:

animateN(obj, {
          attr: value
        }, 5, 0.03, function() {

        });
function animateN(obj, json, interval, sp, fn) {
        clearInterval(obj.timer);
        
        function getStyle(obj, arr) {
          if (obj.currentStyle) {
            console.log(11);
            return obj.currentStyle[arr]; //针对ie
            
          } else {
            console.log(22);
            return window.getComputedStyle(obj, null)[arr];

          }
        }

        obj.timer = setInterval(function() {
          //j ++;
          var flag = true;
          for (var arr in json) {
            var icur = 0;
            //k++;
            if (arr == "opacity") {
              icur = Math.round(parseFloat(getStyle(obj, arr)) * 100);
            } else {
              icur = parseInt(getStyle(obj, arr));
            }
            var speed = (json[arr] - icur) * sp;
            speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
            if (icur != json[arr]) {
              flag = false;
            }
            if (arr == "opacity") {
              obj.style.WebkitFilter ||obj.style.filter = "alpha(opacity : '+(icur + speed)+' )";
              obj.style.opacity = (icur + speed) / 100;
            } else {
              obj.style[arr] = icur + speed + "px";
            }
            //console.log(j + "," + arr +":"+ flag);
          }

          if (flag) {
            clearInterval(obj.timer);
            //console.log(j + ":" + flag);  
            //console.log("k = " + k);
            //console.log("j = " + j);
            //console.log("DONE");
            if (fn) {
              fn();
            }
          }
        }, interval);
      }
阅读 3.6k
1 个回答

你传的是啥参数不支持。透明度和宽度,ie都有效果。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题