Properties map
Velocity auto-prefixes properties (e.g. transform becomes
webkit-transform on WebKit browsers); do not prefix properties
yourself. Velocity animates one numeric value per property.
Hence, you can pass in: { padding: 1 } or
{ paddingLeft: 1, paddingRight: 1 }. But you
cannot pass in { padding: "1 1 1 1" } because
you're providing multiple numeric values.
Velocity supports the px, em,
rem, %, deg, and
vw/vh units. If you do not provide a unit, an
appropriate one is automatically assigned — usually
px, but deg in the case of rotateZ
for example. Velocity supports four value operators:
+, -, *, and
/. You may suffix an equals sign onto any one of
them to perform relative math operations.
Card 1
Card 2
Card 2
Example code:
// Properties animation
Velocity(currentElements, {
marginLeft: 20,
marginRight: 20,
opacity: 0.5
});
Velocity(currentElements, "reverse", {
delay: 1000,
complete: function() {
currentElements.forEach(function(cards) {
cards.removeAttribute('style');
});
}
});
Chained animation
When multiple Velocity calls are stacked onto an element (or a
series of elements), they automatically queue onto one another
— with each one firing once its prior animation has completed.
Current example demonstrates animation of left margin; then,
when finished, animate the right margin property, then animate
opacity property. To animate an element back to the values
prior to its last Velocity call, pass in
reverse as Velocity's first argument.
Card 1
Card 2
Card 2
Example code:
// Chained animation
Velocity(currentElements, {
marginLeft: 20,
marginRight: 20,
opacity: 0.5
});
Velocity(currentElements, "reverse", {
delay: 1000
});
Velocity(currentElements, {
marginRight: 20
});
Velocity(currentElements, "reverse", {
delay: 1000
});
Velocity(currentElements, {
opacity: 0.5
});
Velocity(currentElements, "reverse", {
delay: 1000,
complete: function() {
currentElements.forEach(function(cards) {
cards.removeAttribute('style');
});
}
});
Effect options
Stagger effect
There are three options that work only with UI pack effects,
but not with traditional Velocity calls:
stagger, drag and
backwards. They are passed into a UI pack call
as standard Velocity call options. Specify the
stagger option in ms to
successively delay the animation of each element in a set by
the targeted amount. You can also pass in a value function
to define your own stagger falloffs.
Card 1
Card 2
Card 2
Example code:
// Stagger option
Velocity(currentElements, 'transition.slideUpIn', {
stagger: 500
});
Drag effect
Set the drag option to true to
successively increase the animation duration of each element
in a set. The last element will animate with a duration
equal to the sequence's original value, whereas the elements
before the last will have their duration values gradually
approach the original value. The end result is a
cross-element easing effect.
Card 1
Card 2
Card 2
Example code:
// Drag option
Velocity(currentElements, 'transition.slideUpBigIn', {
duration: 1000,
drag: true
});
Backwards effect
Set the backwards option to
true to animate starting with the last element
in a set. This option is ideal for use with an effect that
transitions elements out of view since the backwards option
mirrors the behavior of elements transitioning into view
(which, by default, animate in the forwards direction — from
the first element to the last).
Card 1
Card 2
Card 2
Example code:
// Backwards option
Velocity(currentElements, 'transition.slideDownOut', {
stagger: 400,
backwards: true
});
Velocity(currentElements, {
opacity: 1
}, {
duration: 500,
display: 'block'
});
Animation callbacks
Begin callback
Pass begin a function to be triggered
prior to the start of the
animation. As with complete, the begin callback
is executed once per call, even if multiple
elements are being animated. Further, if a call is looped,
the begin callback only fires once — at the beginning of the
first loop alternation.
The callback is passed the entire raw DOM (not jQuery)
element array as both its context and its first argument. To
access these elements individually, you must iterate over
the array using jQuery's $.each() or
JavaScript's native .forEach().
Card 1
Card 2
Card 2
Example code:
// Begin callback
Velocity(currentElements, {
marginLeft: 20,
marginRight: 20,
opacity: 0.5
}, {
begin: function() {
alert('Begin callback example');
}
});
Velocity(currentElements, "reverse", {
delay: 1000,
complete: function() {
currentElements.forEach(function(cards) {
cards.removeAttribute('style');
});
}
});
Complete callback
Complete is the converse of the
begin option. Pass the complete option a
function to be triggered once the animation has finished.
The function is executed once per call, even if
multiple elements are being animated at once. Further, if a
call is looped, the complete callback only fires once — at
the end of the last loop alternation.
The callback is passed the entire raw DOM (not jQuery)
element array as both its context and its first argument. To
access these elements individually, you must iterate over
the array using jQuery's $.each() or
JavaScript's native .forEach().
Card 1
Card 2
Card 2
Example code:
// Complete callback
Velocity(currentElements, {
marginLeft: 20,
marginRight: 20,
opacity: 0.5
}, {
complete: function() {
alert('Complete callback example');
}
});
Velocity(currentElements, "reverse", {
delay: 1000,
complete: function() {
currentElements.forEach(function(cards) {
cards.removeAttribute('style');
});
}
});
Progress callback
Pass the progress option a callback function to
be repeatedly triggered througout the duration of the
animation. The callback is passed the entire raw DOM (not
jQuery) element array as both its context and its first
argument. To access these elements individually, you must
iterate over the array using jQuery's
$.each() or JavaScript's native
.forEach(). Further, it's passed
percentComplete (decimal value),
timeRemaining (in ms), and
timeStart (Unix time).
Card 1
Card 2
Card 2
Example code:
// Elements to display progress
const percentage = document.querySelector('#percentComplete');
const time = document.querySelector('#timeRemaining');
// Progress callback
Velocity(currentElements, {
marginLeft: 20,
marginRight: 20,
opacity: 0.5
}, {
duration: 1000,
progress: function(elements, percentComplete, timeRemaining, timeStart) {
percentage.innerHTML = Math.round(percentComplete * 100) + '% complete.';
time.innerHTML = timeRemaining + 'ms remaining.';
}
});
Velocity(currentElements, "reverse", {
delay: 1000,
complete: function() {
currentElements.forEach(function(cards) {
cards.removeAttribute('style');
});
}
});