下面是,从网上找来的一段原生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);
}
你传的是啥参数不支持。透明度和宽度,ie都有效果。