function subscribeScroll(element, cb) { if (typeof (cb) != "undefined") { $(window).scroll(function (event) { var win = $(window), el = $(element); //[0~1] var winTopRatio = (win.scrollTop() + win.height() - el.offset().top) / win.height(); //[-1~0] var winBtmRatio = (win.scrollTop() - el.offset().top - el.height()) / win.height(); var elRatio = (win.scrollTop() + win.height() - el.offset().top) / el.height(); //isShown //scrollTopRatio >= 0 && scrollBtmRatio <= 0 cb(el, winTopRatio, winBtmRatio, elRatio, winTopRatio >= 0 && winBtmRatio <= 0); }); } } $(".page").each(function (i, element) { subscribeScroll(element, function (el, topRatio, btmRatio, elRatio, isShown) { el.css("margin-left", (1 - elRatio) * 100 + "%"); }); });
<section> <div class="page page1"></div> <div class="page page2"></div> <div class="page page3"></div> <div class="page page4"></div> <div class="page page5"></div> </section>
section { overflow: hidden; } .page { height: 400px; } .page1 { background: #B4997F; } .page2 { background: #F79566; } .page3 { background: #F2CC9E; } .page4 { background: #F9E68F; } .page5 { background: #9DA15D; } .slide-in { animation: slide-in 1s cubic-bezier(0.25, 0.1, 0.25, 1); -webkit-animation: slide-in 1s cubic-bezier(0.25, 0.1, 0.25, 1); } @keyframes slide-in { from { transform: translateX(50px); } } @-webkit-keyframes slide-in { from { -webkit-transform: translateX(50px); } }