如何在这个jQuery动画中添加aceleration?
我能够从bottom:-100px
动画我的
( 更多信息 )
bottom:-100px
bottom:0px
。
现在我想要有不同的速度:在动画开始时开始慢一点,然后在动画结束时加快速度。
这就是它的样子:
$('#bannerFijo').animate({ bottom: '-15px' }, 1000, function() { $('#bannerFijo').animate({ bottom: '0px' }, 100); });
但我确信必须有另一种方式让速度逐渐变化。
-编辑-
动画版本二:
$('#bannerFijo').animate({ bottom: '0px' }, 1200, function() { $('#bannerFijo').animate({ bottom: '-15px' }, 300,function() { $('#bannerFijo').animate({ bottom: '-5px' }, 150,function() { $('#bannerFijo').animate({ bottom: '-10px' }, 100,function() { $('#bannerFijo').animate({ bottom: '0px' }, 50); return true; }); }); }); });
-Edit-感谢SuperPaperSam我得到了这个解决方案(’没有’插件)
$.easing.easeOutBounce = function (x, t, b, c, d) { if ((t/=d) < (1/2.75)) { return c*(7.5625*t*t) + b; } else if (t < (2/2.75)) { return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; } else if (t < (2.5/2.75)) { return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; } else { return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; } }
所以animate函数看起来像这样:
function mostrar_banner(){ $('#bannerFijo').animate({ bottom: '+=110px' }, 2000, 'easeOutBounce'); }
Jquery允许缓和,查看缓动插件 。
看起来像这样(未经测试)
$('#bannerFijo').animate({ bottom: '-15px' }, 1000, nameofeasing, function() { $('#bannerFijo').animate({ bottom: '0px' }, 100, nameofeasing); });
编辑:我创建了一个不使用缓动插件的测试页面http://jsfiddle.net/EbJBn/2/
您可以在没有插件的情况下在jQuery中使用任何动画“缓动”function。 我在几个月前发布的这个问题中详细讨论了……
在不使用插件的情况下寻找jQuery缓动函数
上面的线程包含接受的答案中的jQuery缓动函数以及更多第三方缓动函数的链接(该页面上的第2和第3个链接将下载函数)。
看看这里的演示 ,似乎easeInCirc
符合您的描述。
手动将特定的缓动函数添加到 ...
$.easing.easeInCirc = function (x, t, b, c, d) { return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; }
然后你可以通过将它放在duration
参数之后,从现有的jQuery animate()
函数中调用它。
$('#bannerFijo').animate({ bottom: '-15px' }, 1000, 'easeInCirc', function() { $('#bannerFijo').animate({ bottom: '0px' }, 100, 'easeInCirc'); });
这是一个带有animate()
函数的JSFiddle,用于说明。
你的意思是宽松吗?
另一个想法:为什么不把缓动代码带到你的javascript文件? 这是我在JsFiddle中的看法你可以选择你想要的缓和并切断其他人,如果插件大小困扰你。 希望这可以帮助。