难道大家都觉得flag是放在计时器里才对??我的天
flag 放在计时器里跟没定义一个卵样,会出现bug,有些同志没有经过完全的调试就以为找出了一个bug;其实不然,运行的时候打开F12看看高宽就知道了,
flag 放在计时器里跟没定义一个卵样,会出现bug,有些同志没有经过完全的调试就以为找出了一个bug;其实不然,运行的时候打开F12看看高宽就知道了,
2017-03-26
//同步运动函数 function move(obj, json, fn) { //清除定时器,避免出现多个定时器 clearInterval(obj.timer); //设定定时器 obj.timer = setInterval(function () { //声明标杆变量 var flag = true; //遍历同步运动属性 for (var attr in json) { //获取属性值 var icur = 0; if (attr == 'opacity') { icur = Math.round(parseFloat(getStyle(obj,attr)) * 100); } else { icur = parseInt(getStyle(obj, attr)); } //设置运动速度 var speed = (json[attr] - icur)/100; speed = speed>0?Math.ceil(speed):Math.floor(speed); // 判断是否所有值都达到了目标值,判定暂停定时器的指标 if (icur != json[attr]) { flag = false; } if (attr == 'opacity') { obj.style.opacity = (icur + speed) / 100; obj.style.filter = 'alpha(opacity:' + (icur + speed) + ')'; } else { obj.style[attr] = (icur + speed) + 'px'; } } //清除定时器 if(flag){ clearInterval(obj.timer); if(fn){ fn(); } } }, 1); } //获取任意属性 function getStyle(obj, attr) { if (obj.currentStyle) { return obj.currentStyle[attr]; //IE取样式 } else { return getComputedStyle(obj, false)[attr]; } }
举报