Nomadic Functions
Where selfishness is good™
blog
code
code
/
transition
Here are the functions used in
Robert Penners
easing demo’s, converted to javascript.
JAVASCRIPT
Sine={ 'easeIn':function(t,b,c,d) { return-c*Math.cos(t/d*(Math.PI/2))+c+b; }, 'easeOut':function(t,b,c,d) { return c*Math.sin(t/d*(Math.PI/2))+b; }, 'easeInOut':function(t,b,c,d) { return-c/2*(Math.cos(Math.PI*t/d)-1)+b; } }; Quint={ 'easeIn':function(t,b,c,d) { return c*(t/=d)*t*t*t*t+b; }, 'easeOut':function(t,b,c,d) { return c*((t=t/d-1)*t*t*t*t+1)+b; }, 'easeInOut':function(t,b,c,d) { if((t/=d/2)<1) return c/2*t*t*t*t*t+b; return c/2*((t-=2)*t*t*t*t+2)+b; } }; Quart={ 'easeIn':function(t,b,c,d) { return c*(t/=d)*t*t*t+b; }, 'easeOut':function(t,b,c,d) { return-c*((t=t/d-1)*t*t*t-1)+b; }, 'easeInOut':function(t,b,c,d) { if((t/=d/2)<1) return c/2*t*t*t*t+b; return-c/2*((t-=2)*t*t*t-2)+b; } }; Quad={ '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; }, 'easeInOut':function(t,b,c,d) { if((t/=d/2)<1) return c/2*t*t+b; return-c/2*((--t)*(t-2)-1)+b; } }; Linear={ 'easeIn':function(t,b,c,d) { return c*t/d+b; }, 'easeOut':function(t,b,c,d) { return c*t/d+b; }, 'easeInOut':function(t,b,c,d) { return c*t/d+b; } }; Expo={ 'easeIn':function(t,b,c,d) { return(t==0)?b:c*Math.pow(2, 10*(t/d-1))+b; }, 'easeOut':function(t,b,c,d) { return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b; }, 'easeInOut':function(t,b,c,d) { if(t==0) return b; if(t==d) return b+c; if((t/=d/2)<1) return c/2*Math.pow(2, 10*(t-1))+b; return c/2*(-Math.pow(2,-10*--t)+2)+b; } }; Elastic={ 'easeIn':function(t,b,c,d,a,p) { if(t==0) return b; if((t/=d)==1) return b+c; if(!p) p=d*.3; if(!a || a<Math.abs(c)) { a=c; var s=p/4; } else var s=p/(2*Math.PI)*Math.asin(c/a); return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b; }, 'easeOut':function(t,b,c,d,a,p) { if(t==0) return b; if((t/=d)==1) return b+c; if(!p) p=d*.3; if(!a || a<Math.abs(c)) { a=c; var s=p/4; } else var s=p/(2*Math.PI)*Math.asin(c/a); return(a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b); }, 'easeInOut':function(t,b,c,d,a,p) { if(t==0) return b; if((t/=d/2)==2) return b+c; if(!p) p=d*(.3*1.5); if(!a || a<Math.abs(c)) { a=c; var s=p/4; } else var s=p/(2*Math.PI)*Math.asin(c/a); if(t<1) return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b; return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b; } }; Cubic={ 'easeIn':function(t,b,c,d) { return c*(t/=d)*t*t+b; }, 'easeOut':function(t,b,c,d) { return c*((t=t/d-1)*t*t+1)+b; }, 'easeInOut':function(t,b,c,d) { if((t/=d/2)<1) return c/2*t*t*t+b; return c/2*((t-=2)*t*t+2)+b; } }; Circ={ 'easeIn':function(t,b,c,d) { return-c*(Math.sqrt(1-(t/=d)*t)-1)+b; }, 'easeOut':function(t,b,c,d) { return c*Math.sqrt(1-(t=t/d-1)*t)+b; }, 'easeInOut':function(t,b,c,d) { if((t/=d/2)<1) return-c/2*(Math.sqrt(1-t*t)-1)+b; return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b; } }; Bounce={ 'easeOut':function(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; } }, 'easeIn':function(t,b,c,d) { return c-Bounce.easeOut(d-t, 0, c, d)+b; }, 'easeInOut':function(t,b,c,d) { if(t<d/2) return Bounce.easeIn(t*2, 0, c, d)*.5+b; else return Bounce.easeOut(t*2-d, 0, c, d)*.5+c*.5+b; } }; Back={ 'easeIn':function(t,b,c,d,s) { if(s==undefined) s=1.70158; return c*(t/=d)*t*((s+1)*t-s)+b; }, 'easeOut':function(t,b,c,d,s) { if(s==undefined) s=1.70158; return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b; }, 'easeInOut':function(t,b,c,d,s) { if(s==undefined) s=1.70158; if((t/=d/2)<1) return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b; return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b; } };
Have ideas for code changes?
CC
·
GPL
·
NoFunc.com