Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


npm version

This library is a wrapper around Keyframes.js, a vanilla js library that allows dynamic generation of CSS keyframes with callback events and other niceness.


CSS3 introduced fancy features like transformations, translations, rotations and scaling. jQuery has a very nice built in $(selector).animate() function which allows for easy setup of these animations. However, jQuery's animate() does not support multiple keyframes. jQuery.Keyframes helps you accomplish just that.


<script src=''></script>


Include script in your document using the following line:

<script src='/path/to/jquery.keyframes[.min].js'></script>

Be sure to define and play animations only after the page has loaded using window.onload.


Detecting CSS animation support

var supportedFlag = $.keyframe.isSupported();

Adding a new animation sequence (keyframe)

    name: 'trapdoor-sequence',
    '0%': {'height': '70px'},
    '30%': {'height': '10px'},
    '60%': {'height': '30px'},
    '100%': {'height': '10px'}

Adding a single frame style

    name: 'ball-roll',
    from: {
        'transform': 'rotate(0deg)'
    to: {
        'transform': 'rotate(360deg)'

Adding multiple frame styles

	name: 'roll-clockwise',
	'0%': {
	    'margin-left' : '0px',
	    'background-color' : 'red',
	    'transform' : 'rotate(0deg)'
	'100%': {
	    'margin-left' : '600px',
	    'transform' : 'rotate(360deg)'
	name: 'roll-anti-clockwise',
	'0%': {
	    'margin-left' : '0px',
	    'background-color' : 'red',
	    'transform' : 'rotate(0deg)'
	'100%': {
	    'margin-left' : '600px',
	    'transform' : 'rotate(-360deg)'

Adding styles and properties in array fashion

Gives resemblance to CSS styling definitions

var shake_start = {'transform': 'translate(0px)'};
var shake_odd1 = {'transform': 'translate(-10px, -10px)'};
var shake_even1 = {'transform': 'translate(10px, 10px)'};
var shake_odd2 = {'transform': 'translate(10px, -10px)'};
var shake_even2 = {'transform': 'translate(-10px, 10px)'};

	name: 'crazy',
	'0%': shake_start,
	'10%': shake_odd2,
	'20%': shake_even1,
	'30%': shake_odd2,
	'40%': shake_even2,
	'50%': shake_odd2,
	'60%': shake_even1,
	'75.3%': shake_odd1,
	'80.45%': shake_even2,
	'91.6%': shake_odd1

Please note, you can add as many properties to the array as you want to

Responsive animations

    name: 'roll-clockwise',
    media: 'screen and (max-width: 700px)',
    from: {
        'margin-left' : '0px'
    to: {
        'margin-left' : '600px'

Playing an animation

The css3 animation methods available are better documented here:

    name: 'trapdoor-sequence', // name of the keyframe you want to bind to the selected element
    duration: '1s', // [optional, default: 0, in ms] how long you want it to last in milliseconds
    timingFunction: 'linear', // [optional, default: ease] specifies the speed curve of the animation
    delay: '0s', //[optional, default: 0s]  how long you want to wait before the animation starts
    iterationCount: 'infinite', //[optional, default:1]  how many times you want the animation to repeat
    direction: 'normal', //[optional, default: 'normal']  which direction you want the frames to flow
    fillMode: 'forwards', //[optional, default: 'forward']  how to apply the styles outside the animation time, default value is forwards
    complete: function(){} //[optional] Function fired after the animation is complete. If repeat is infinite, the function will be fired every time the animation is restarted.

Playing an animation (shorthand)

    'trapdoor-sequence 1s linear 0s infinite normal forwards',

Playing multiple animations

    'trapdoor-sequence 1s linear 0s infinite',
      name: 'ball-roll',
      duration: "3s",
      timingFunction: 'ease',
      iterationCount: 1
], complete);

Reset the animation


Freeze keyframe animation and kill callbacks


Resume keyframe animation


Who is using jQuery.Keyframes?


See other plugins that allow for spritesheets & more complex movement paths:

  • Keyframes.Pathfinder: A plugin for jQuery.Keyframes that generates complex movement paths
  • Keyframes.Spritesheet: Keyframes.Spritesheet easily generates css3 keyframes for elements using animated spritesheets.



  • Moved to use keyframes.js as a base 0.1.0
  • Remove all vendor prefix functionality (if you need this stick with 0.0.9)
  • Remove debug output
  • Source code now in ES6
  • Remove advanced example
  • Add jQuery 3.x to example
  • Add linting 0.0.9
  • Add debug output


jQuery-Keyframes allows dynamic generation of CSS3 keyframes with callback events and other niceness.







No packages published