Skip to content

Instantly share code, notes, and snippets.

@shodanuk
Created March 18, 2012 10:35
Show Gist options
  • Save shodanuk/2070445 to your computer and use it in GitHub Desktop.
Save shodanuk/2070445 to your computer and use it in GitHub Desktop.
Generate cross browser transitons CSS (includes custom easing functions)
/**
* Create cross browser transition CSS
*
* @param {Integer} duration Duration in milliseconds.
* @param {String} easing Easing function. Can be built-in CSS3 function or one of the provided custom functions.
* @param {String} prop CSS property to apply transition to.
*/
function transitionCss(duration, easing, prop) {
var easingDefs = {
easeInCubic : 'cubic-bezier(0.550, 0.055, 0.675, 0.190)',
easeOutCubic : 'cubic-bezier(0.215, 0.610, 0.355, 1.000)',
easeInOutCubic : 'cubic-bezier(0.645, 0.045, 0.355, 1.000)',
easeInCirc : 'cubic-bezier(0.600, 0.040, 0.980, 0.335)',
easeOutCirc : 'cubic-bezier(0.075, 0.820, 0.165, 1.000)',
easeInOutCirc : 'cubic-bezier(0.785, 0.135, 0.150, 0.860)',
easeInExpo : 'cubic-bezier(0.950, 0.050, 0.795, 0.035)',
easeOutExpo : 'cubic-bezier(0.190, 1.000, 0.220, 1.000)',
easeInOutExpo : 'cubic-bezier(1.000, 0.000, 0.000, 1.000)',
easeInQuad : 'cubic-bezier(0.550, 0.085, 0.680, 0.530)',
easeOutQuad : 'cubic-bezier(0.250, 0.460, 0.450, 0.940)',
easeInOutQuad : 'cubic-bezier(0.455, 0.030, 0.515, 0.955)',
easeInQuart : 'cubic-bezier(0.895, 0.030, 0.685, 0.220)',
easeOutQuart : 'cubic-bezier(0.165, 0.840, 0.440, 1.000)',
easeInOutQuart : 'cubic-bezier(0.770, 0.000, 0.175, 1.000)',
easeInQuint : 'cubic-bezier(0.755, 0.050, 0.855, 0.060)',
easeOutQuint : 'cubic-bezier(0.230, 1.000, 0.320, 1.000)',
easeInOutQuint : 'cubic-bezier(0.860, 0.000, 0.070, 1.000)',
easeInSine : 'cubic-bezier(0.470, 0.000, 0.745, 0.715)',
easeOutSine : 'cubic-bezier(0.390, 0.575, 0.565, 1.000)',
easeInOutSine : 'cubic-bezier(0.445, 0.050, 0.550, 0.950)',
easeInBack : 'cubic-bezier(0.600, -0.280, 0.735, 0.045)',
easeOutBack : 'cubic-bezier(0.175, 0.885, 0.320, 1.275)',
easeInOutBack : 'cubic-bezier(0.680, -0.550, 0.265, 1.550)'
}
if (typeof prop === 'undefined') {
prop = 'all';
}
if (typeof easing === 'undefined') {
easing = 'ease-in';
}
var val = prop+' '+(duration/1000)+'s '+easingDefs[easing];
return {
'-webkit-transition': val,
'-moz-transition': val,
'-o-transition': val,
'-ms-transition': val,
'transition': val
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment