源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

javascript动画对象支持加速、减速、缓入、缓出的实现代码

  • 时间:2020-12-07 00:37 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:javascript动画对象支持加速、减速、缓入、缓出的实现代码
调用接口:
[url=http://demo.jb51.net/js/2012/pic_switch/]演示效果[/url]
[u]复制代码[/u] 代码如下:
//辅助对象,读/写DOM元素属性 var attribute = { get: function(elem, attr){ var val; if(elem.currentStyle){ if(attr === "opacity") { val = elem.filters.alpha[attr]; }else { val = elem.currentStyle[attr]; } } else{ val = getComputedStyle(elem)[attr]; if(attr === "opacity") { val = 100 * val; } } return val; }, set: function(elem, attr, val){ if(attr=='opacity'){ elem.style.filter = 'alpha(opacity='+ (val) +')'; elem.style.opacity = (val)/100; } else{ elem.style[attr] = val + 'px'; } } }; /* * 描述: tween动画算法。 * @param Number t: 动画已经执行的时间(实际上时执行多少次/帧数) * @param Number b: 起始位置 * @param Number c: 终止位置 * @param Number d: 从起始位置到终止位置的经过时间(实际上时执行多少次/帧数) */ var tween = { //缓入 easeIn: function (t, b, c, d){ return c * (t/=d) * t + b; }, //缓出 easeOut: function (t,b,c,d){ return -c * (t/=d) * (t-2) + b; } }; //动画对象 var effect = { animate: function(elem, params, duration, easing, callback){ var dt = new Date().getTime(), b = 0, c = 0, d = duration || 500, fps = 1000/60; var changes = []; for(var attr in params){ b = parseFloat(attribute.get(elem, attr)); c = params[attr] - b; changes.push({ attr: attr, b: b, c: c }); } easing = easing || "easeOut"; callback = callback || new Function; setTimeout(function(){ var t = new Date().getTime() - dt; var b, c, attr; for(var i=0; i<changes.length; i++){ b = changes[i].b; c = changes[i].c; attr = changes[i].attr; attribute.set(elem, attr, tween[easing](t, b, c, d)); if(d <= t){ attribute.set(elem, attr, params[attr]); callback(); return; } } setTimeout(arguments.callee, fps); }, fps); } }; //by rentj1@163.com
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部