Courtesy: https://www.youtube.com/watch?v=2zpfWJCdNAI
A Pen by Bhavesh Gohel on CodePen.
| <ul class="parallax"> | |
| <li> | |
| <div class="parallax-bg bg-1"></div> | |
| <div class="subcontent" style="left:100px;"> | |
| <h1>Sample Title</h1> | |
| <h2>Lorem ipsum text</h2> | |
| </div> | |
| </li> | |
| <li> | |
| <div class="parallax-bg bg-2"></div> | |
| <div class="subcontent" style="right:100px;"> | |
| <h1>Sample Title</h1> | |
| <h2>Lorem ipsum text</h2> | |
| </div> | |
| </li> | |
| <li> | |
| <div class="parallax-bg bg-3"></div> | |
| <div class="subcontent" style="left:100px;" > | |
| <h1>Sample Title</h1> | |
| <h2>Lorem ipsum text</h2> | |
| </div> | |
| </li> | |
| <li> | |
| <div class="parallax-bg bg-4"></div> | |
| <div class="subcontent" style="left:100px;"> | |
| <h1>Sample Title</h1> | |
| <h2>Lorem ipsum text</h2> | |
| </div> | |
| </li> | |
| <li> | |
| <div class="parallax-bg bg-1"></div> | |
| <div class="subcontent" style="right:100px;"> | |
| <h1>Sample Title</h1> | |
| <h2>Lorem ipsum text</h2> | |
| </div> | |
| </li> | |
| <li> | |
| <div class="parallax-bg bg-2"></div> | |
| <div class="subcontent" style="left:100px;" > | |
| <h1>Sample Title</h1> | |
| <h2>Lorem ipsum text</h2> | |
| </div> | |
| </li> | |
| </ul> |
| (function($){ | |
| var $container = $(".parallax"); | |
| var $divs = $container.find("div.parallax-bg"); | |
| var thingBeingScrolled = document.body; | |
| var liHeight = $divs.eq(0).closest("li").height(); | |
| var diffHeight = $divs.eq(0).height() - liHeight; | |
| var len = $divs.length; | |
| var i, div, li, offset, scroll, top, transform; | |
| //catching initial offsets | |
| var offsets = $divs.get().map(function(div,d){ | |
| return $(div).offset(); | |
| }); | |
| var render = function(){ | |
| top = thingBeingScrolled.scrollTop; | |
| for(i=0;i<len;i++){ | |
| //get the DOM object | |
| div = $divs[i]; | |
| //our offset | |
| offset = top - offsets[i].top; | |
| //our transform string | |
| scroll = ~~(offset / liHeight * diffHeight); | |
| //our transform string | |
| transform = 'translate3d(0px, ' + scroll + 'px , 0px)'; | |
| //apply | |
| div.style.webkitTransform = transform; | |
| div.style.MozTransform = transform; | |
| div.style.msTransform = transform; | |
| div.style.OTransform = transform; | |
| div.style.transform = transform; | |
| } | |
| }; | |
| (function loop(){ | |
| requestAnimationFrame(loop); | |
| render(); | |
| })(); | |
| (function() { | |
| var lastTime = 0; | |
| var vendors = ['webkit', 'moz']; | |
| for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { | |
| window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame']; | |
| window.cancelAnimationFrame = | |
| window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame']; | |
| } | |
| if (!window.requestAnimationFrame) | |
| window.requestAnimationFrame = function(callback, element) { | |
| var currTime = new Date().getTime(); | |
| var timeToCall = Math.max(0, 16 - (currTime - lastTime)); | |
| var id = window.setTimeout(function() { callback(currTime + timeToCall); }, | |
| timeToCall); | |
| lastTime = currTime + timeToCall; | |
| return id; | |
| }; | |
| if (!window.cancelAnimationFrame) | |
| window.cancelAnimationFrame = function(id) { | |
| clearTimeout(id); | |
| }; | |
| }()); | |
| })(jQuery); | |
| //Easing Scroll Effect | |
| $(function(){ | |
| var $window = $(window); | |
| var scrollTime = 1.2; | |
| var scrollDistance = 170; | |
| $window.on("mousewheel DOMMouseScroll", function(event){ | |
| event.preventDefault(); | |
| var delta = event.originalEvent.wheelDelta/120 || -event.originalEvent.detail/3; | |
| var scrollTop = $window.scrollTop(); | |
| var finalScroll = scrollTop - parseInt(delta*scrollDistance); | |
| TweenMax.to($window, scrollTime, { | |
| scrollTo : { y: finalScroll, autoKill:true }, | |
| ease: Power1.easeOut, | |
| overwrite: 5 | |
| }); | |
| }); | |
| }); |
Courtesy: https://www.youtube.com/watch?v=2zpfWJCdNAI
A Pen by Bhavesh Gohel on CodePen.
| body{ | |
| margin: 0; | |
| padding: 0; | |
| } | |
| ul{ | |
| margin: 0; | |
| padding: 0; | |
| } | |
| ul li{ | |
| list-style: none; | |
| overflow: hidden; | |
| height: 500px; | |
| position: relative; | |
| } | |
| .parallax-bg{ | |
| height: 700px; | |
| } | |
| .bg-1{ | |
| background: url("http://placekitten.com/900/500"); | |
| background-position: 32% 100%; | |
| background-size: cover; | |
| } | |
| .bg-2{ | |
| background: url("http://placebear.com/g/900/500"); | |
| background-size: cover; | |
| background-position: 40% 30%; | |
| } | |
| .bg-3{ | |
| background: url("http://placekitten.com/900/500"); | |
| background-position: 33% 190%; | |
| background-size: cover; | |
| } | |
| .bg-4{ | |
| background: url("http://placebear.com/g/900/500"); | |
| background-position: 46% 48%; | |
| background-size: cover; | |
| } | |
| ul li .subcontent{ | |
| position: absolute; | |
| top: 100px; | |
| color: white; | |
| font-family: helvetica; | |
| } | |
| h1{ | |
| font-size: 50px; | |
| margin-bottom: 0; | |
| text-transform: uppercase; | |
| } | |
| h2{ | |
| font-size: 30px; | |
| margin-top: 0px; | |
| } |