How to get Smooth Slide In (as we scroll down) Boxes?
I was playing with my new Nexus 7 (I really wanted to own a real Android device) and I noticed a neat little effect in the Google+ app that comes with it. As you swipe down, new modules of content slide up into place. Video is best here:
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><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div><div class="module"></div></section>
CSS
* {@include box-sizing(border-box);}section {background: #eee;max-width: 600px;margin: 0 auto;padding: 20px;overflow: hidden;}.module {width: 48%;min-height: 200px;background: white;position: relative;float: left;padding: 20px;margin-right: 4%;margin-bottom: 4%;&:nth-child(even) {margin-right: 0;}box-shadow: 0 1px 3px rgba(black, 0.2);}body {background: url(http://s.cdpn.io/3/blurry-blue.jpg);background-size: cover;padding: 30px;}.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); }}
JS
// Makes use of the visible plugin// https://raw.github.com/teamdf/jquery-visible/master/jquery.visible.min.jsvar 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");}});});