本文最后更新于:2023年3月30日 下午
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| ;
function getClass(cls) { var ret = []; var els = document.getElementsByTagName('*'); for (var i = 0; i < els.length; i++) { if(els[i].className === cls || els[i].className.indexOf('cls') >= 0 || els[i].className.indexOf(' cls') >= 0 || els[i].className.indexOf(' cls ') > 0) { ret.push(els[i]); } } return ret; }
function getStyle(obj, attr) { return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj,false)[attr]; } function startMove(obj, json, fun) { clearInterval(obj.timer); obj.timer = setInterval(function() { var isStop = true; for (var attr in json) { var iCur = 0; if (attr === 'opacity') { iCur = parseInt(parseFloat(getStyle(obj, attr)) * 100); } else { iCur = parseInt(getStyle(obj, attr)); } var ispeed = (json[attr] - iCur) / 8; ispeed = ispeed > 0 ? Math.ceil(ispeed) : Math.floor(ispeed); if (iCur !== json[attr]) { isStop = false; } if (attr === 'opacity') { obj.style.filter = 'alpha:(opacity:' + (json[attr] + ispeed) + ')'; obj.style.opacity = (json[attr] + ispeed) / 100; } else { obj.style[attr] = iCur+ispeed + 'px'; } } if (isStop) { clearInterval(obj.timer); if (fun) { fun(); } } }, 30); }
|
这是一直跟着视频学的运动函数封装,看上去和jQuery的animate很像,但又不是,
看一个实例吧:轮播图这就是用这个运动框架做成的
再来看另一个:有点像3D方式的放大但其实不是,实则是变大了 width height margin-top margin-left
放大案例