GitXplorerGitXplorer
a

viento

public
2 stars
0 forks
4 issues

Commits

List of commits on branch master.
Unverified
6edd08520d4a07987c4e7a1daa8f412614981ad5

Master branch is actually master, not gh-pages

aau5ton committed 9 years ago
Unverified
2919c2cb7193f64e3c1b9f761baa79d64063a29f

Unused server code

aau5ton committed 10 years ago
Unverified
cc7eb77d68f15d0709b180ade413b4ee0f0936fd

Added Node.js development server

aau5ton committed 10 years ago
Unverified
03ea19fbd375aa97c83d15e86841d9f9dafa134e

Removed horizontal scrolling problem during the middle of an animation

aau5ton committed 10 years ago
Unverified
587db264739d742a3d09fca710e76fad79ef0568

Revert 1a37731..ab9cb90

aau5ton committed 10 years ago
Unverified
ab9cb90db43a237dbc3237d95706ba646ae0a84b

Removed some recursive redundancies

aau5ton committed 10 years ago

README

The README file for this repository.

viento

Fire and manage CSS animations on-the-fly. Tested to be compatible with Animate.css.

Purpose

Viento provides a neat way to manage CSS animations and their properties, control flow, and timing. Also, "viento" means "wind" in Spanish, because this library makes CSS animations a breeze.

Installation

With npm: npm install viento --save

Without npm: Download viento.js and put it whereever you'd like.

Note: viento.js is uncompressed

//Make calls like this
Viento.fire();

Dependencies

Viento.js requires jQuery because of its selectors, element manipulation, and event handling functionality (specifically .off() and .on()). You probably already use this library anyway.

This library also requires that you have a hidden CSS class somewhere in your loaded CSS, in order to entrance or exit animations properly.

.hidden {
    visibility: hidden;
}

Usage

Viento.js provides a unique wrap to let you fire CSS animations. To learn how viento.js works internally, I try to keep it pretty well commented over here. Let's go over some basic usage. These examples contain animations from the Animate.css animation library.

Viento.fire()

Basic usage

<div id="box"></div>

<script>

Viento.fire({
  element: $("#box")[0], //Provide A SINGLE element object, you could also use document.getElementById().
  animation: {
    //Supply any CSS animation related property
    name: "rubberBand", //`animation-name: rubberBand;` equivalent, provide what has @keyframe in front of it
    duration: "1s" //`animation-duration: 1s;` equivalent
  }
});

</script>

In the previous example, we import viento and use the global fire() function. The #box element will now run the given animation, and even clean up after itself (not shown in the example).

Using the callback function

<div id="box"></div>
<div id="circle"></div>

<script>

Viento.fire({
  element: $("#box")[0],
  animation: {
    name: "rubberBand",
    duration: "1s"
  },
  callback: function() {
    //Once the #box has finished animating, animate the #circle
    Viento.fire({
      element: $("#circle")[0],
      animation: {
        name: "rubberBand",
        duration: "2s"
      }
    });
  }
});

</script>

In the previous example, we apply the rubberBand animation to #box for 1 second, and upon completion of that animation, apply the rubberBand animation to the #circle for 2 seconds.

Running animations simultaneously

<div id="box"></div>
<div id="circle"></div>
<div id="triangle"></div>

<script>

Viento.fire({
  element: $("#box")[0],
  animation: {
    name: "rubberBand",
    duration: "1s"
  }
});

Viento.fire({
  element: $("#circle")[0],
  animation: {
    name: "rubberBand",
    duration: "1s"
  }
});

</script>

In the above example, #box and #circle both run the same animations for the same duration at the same time. Viento.fire() is an asynchronous function.

All other options

Viento.fire({
  element: $("#foo")[0], //Required, the single element you will be animating.
  animation: {
    beforeDelay: 1000, //Optional, milliseconds delay before the animation begins
    afterDelay: 2000, //Optional, milliseconds delay after the animation ends
    type: "entrance", //Optional, used for animating entrances and exits of elements. Uses the "hidden" CSS class. Possible parameters: "entrance" or "exit".
    name: "rubberBand", //Required, CSS bind to the animation-name property.
    duration: "1s", //Required, CSS bind to the animation-duration property.
    delay: "2s", //Optional, CSS bind to the animation-delay property.
    direction: "alternate", //Optional, CSS bind to the animation-direction property.
    fillMode: "none", //Optional, CSS bind to the animation-fill-mode property.
    iterationCount: "0", //Optional, CSS bind to the animation-iteration-count property.
    playState: "running", //Optional, CSS bind to the animation-play-state property.
    timingFunctions: "ease" //Optional, CSS bind to the animation-timing-functions property.
    animation: "" //Optional, CSS bind to the animation property. If specified, it will overwrite the others
  },
  callback: function(){
    //Optional, code run immediately following the completion of the animation
  }
});

Viento.burst()

Viento.fire() can only run animations on one element at a time, but selecting multiple elements, in libraries such as jQuery, returns an array. Passing an array into Viento.fire() will fail, as it's expecting only a single element. That is why the example code above has a [0] after the jQuery selector.

v.fire({ element: $("#foo")[0], animation: { ... }});

Using Viento.burst(), you can easily run the same animation on multiple elements.

<div id="red" class="box"></div>
<div id="yellow" class="box"></div>
<div id="purple" class="box"></div>

<script>

Viento.burst({
  elements: $(".box"), //Required, specifies an array of elements that you want to act upon
  mode: "allAtOnce", //Optional, specifies if you want to fire the animations on the elements "allAtOnce" or "oneAtATime"
  sortingMethod: "topToBottom", //Optional, specifies which elements should be animated first. Pass an Array.sort() compatible function and use the objects as elements, or use some built-in ones with "topToBottom" or "bottomToTop"
  animation: { //Verbatim animation object from Viento.fire(), see above for details and arguments
    name: "rubberBand",
    duration: "1s"
  }
});

//#red, #yellow, and #purple all run the spinAround animation, simultaneously

</script>