Animation, CSS3, Javascript, jQuery | Type: JavascriptAnimate as Item Enters Viewport

Nice piece of work from Chris Coyier.

HTML

<section>
     <div class="module"> </div>
     <div class="module"> </div>
     <div class="module"> </div>
     <div class="module"> </div>
     <div class="module"> </div>
     <div class="module"> </div>
     etc...
</section>

CSS

.come-in {
transform: translateY(150px);
animation: come-in 0.8s ease forwards;
}
.come-in:nth-child(odd) {
animation-duration: 0.6s;
}
.already-visible {
transform: translateY(0);
animation: none;
}
@keyframes come-in {
to { transform: translateY(0); }
}

JAVASCRIPT

(function($) {

/**
* Copyright 2012, Digital Fusion
* Licensed under the MIT license.
* http://teamdf.com/jquery-plugins/license/
*
* @author Sam Sehnert
* @desc A small plugin that checks whether elements are within
* the user visible viewport of a web browser.
* only accounts for vertical position, not horizontal.
*/

$.fn.visible = function(partial) {
    var $t = $(this),
        $w = $(window),
        viewTop = $w.scrollTop(),
        viewBottom = viewTop + $w.height(),
        _top = $t.offset().top,
        _bottom = _top + $t.height(),
        compareTop = partial === true ? _bottom : _top,
        compareBottom = partial === true ? _top : _bottom;
    return ((compareBottom <= viewBottom) && (compareTop >= viewTop));
};
})(jQuery);
var win = $(window);
var allMods = $(".module");
allMods.each(function(i, el) {
    var el = $(el);
    if (el.visible(true)) {

    el.addClass("already-visible");     }
});
win.scroll(function(event) {
    allMods.each(function(i, el) {
    var el = $(el);
    if (el.visible(true)) {
        el.addClass("come-in");
    }
});
});

Reference Links