"card animation"
Bootstrap 4.0.0 Snippet by oliuz

<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script> <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> <!------ Include the above in your HEAD tag ----------> <div class="video-bg"> <div class="text-content"> <div class="par">That's it folks, thanks for coming!<br>Follow me for more awesome interaction like this in the future.</div> <button class="close">Go back</button> </div> </div> <div class="translucent-ctr"> <div class="translucent"></div> </div> <div class="slider-ctr"> <div class="text-content"> <div class="title">Select Movies</div> <div class="par detail">Scroll horizontally to navigate</div> </div> <div class="slider-scroll"> <div class="slide"> <figure> <div class="image-ctr"> <div class="image deadpool" data-index="{#i}"> <div class="light"></div> </div> <figcaption>Deadpool</figcaption> </div> </figure> </div> <div class="slide"> <figure> <div class="image-ctr"> <div class="image godfather" data-index="{#i}"> <div class="light"></div> </div> <figcaption>The Godfather</figcaption> </div> </figure> </div> <div class="slide"> <figure> <div class="image-ctr"> <div class="image goodbadugly" data-index="{#i}"> <div class="light"></div> </div> <figcaption>The Good, Bad, and Ugly</figcaption> </div> </figure> </div> <div class="slide"> <figure> <div class="image-ctr"> <div class="image darkknight" data-index="{#i}"> <div class="light"></div> </div> <figcaption>The Dark Knight</figcaption> </div> </figure> </div> <div class="slide"> <figure> <div class="image-ctr"> <div class="image godfather2" data-index="{#i}"> <div class="light"></div> </div> <figcaption>The Godfather 2</figcaption> </div> </figure> </div> <div class="slide"> <figure> <div class="image-ctr"> <div class="image twelveangrymen" data-index="{#i}"> <div class="light"></div> </div> <figcaption>12 Angry Men</figcaption> </div> </figure> </div> <div class="slide"> <figure> <div class="image-ctr"> <div class="image django" data-index="{#i}"> <div class="light"></div> </div> <figcaption>Django Unchained</figcaption> </div> </figure> </div> <div class="slide"> <figure> <div class="image-ctr"> <div class="image wallflower" data-index="{#i}"> <div class="light"></div> </div> <figcaption>The Perks of being Wallflower</figcaption> </div> </figure> </div> <div class="slide"> <figure> <div class="image-ctr"> <div class="image shawshank" data-index="{#i}"> <div class="light"></div> </div> <figcaption>Shawshank Redemption</figcaption> </div> </figure> </div> </div> </div> <script> function $(elem){ return document.querySelector(elem); } function $$(elem){ return document.querySelectorAll(elem); } // beep var audio = new Audio("https://s3-us-west-2.amazonaws.com/s.cdpn.io/111167/beep3.wav"); var imagesCtr = $$(".image-ctr"), images = $$(".image"), imagesLength = images.length - 1; // nodelist to array imagesCtr = [].slice.call(imagesCtr); var sliderCtr = $(".slider-ctr"), videoBg = $(".video-bg"), title = $(".title"), detail = $(".detail"); // get the next siblings of selected element function nextSiblings(x, y){ var arr = []; for(y; y < x; x--){ arr.push(x); } return arr.reverse(); } // get the previous siblings of selected element function prevSiblings(x){ var arr = []; for(var y = -1, x = x - 1; y < x; x--){ arr.push(x); } return arr; } var tl = new TimelineMax(), tlText = new TimelineMax(), tlAdditional = new TimelineMax(); images.forEach(function(image){ image.addEventListener("click", function(){ setTimeout(function(){ videoBg.classList.add("active"); }, 600); var index = parseInt(this.getAttribute("data-index")), yAnim = -40, thisImage = this; console.log(this) tlText .staggerTo([title, detail], .15, { y: -15, opacity: 0 }, -.15) .set([title, detail], { y: 15 }) tl .set(thisImage, { className: "+=selected disabled" }) .to(thisImage, .05, { scale: 1, easing: Elastic.easeOut }) .to(thisImage, .15, { opacity: 0, y: yAnim, onComplete: nextTl }) .set(thisImage, { y: yAnim * (-1), }) prevSiblings(index).map(function(x){ tl.set(imagesCtr[x], { className: "+=disabled" }).to(imagesCtr[x], .15, { opacity: 0, y: yAnim }).set(imagesCtr[x], { y: yAnim * (-1), }) }); function nextTl() { nextSiblings(imagesLength, index).map(function(x){ tlAdditional.set(imagesCtr[x], { className: "+=disabled" }).to(imagesCtr[x], .15, { opacity: 0, y: yAnim }).set(imagesCtr[x], { y: yAnim * (-1), }) }) } }); image.addEventListener("mouseenter", function(){ this.children[0].classList.add("light-on"); }); image.addEventListener("mousemove", function(e){ var w = this.offsetWidth, h = this.offsetHeight, o = 9 - e.offsetX / w * 18, a = 9 - e.offsetY / h * 18, n = e.offsetX - w / 2, r = e.offsetY - h / 2, s = Math.atan2(r, n), t = 180 * s / Math.PI - 90, transform = "translateY(" + -o + "px) translateX(" + -a + "px) rotateX(" + -a + "deg) rotateY(" + -o + "deg)"; this.style.MozTransform = transform; this.style.WebkitTransform = transform; this.children[0].style.background = "linear-gradient(" + t + "deg, rgba(255,255,255," + e.offsetY / h / 2 + ") 0%,rgba(255,255,255,0) 60%)"; }); image.addEventListener("mouseleave", function(e){ this.style.MozTransform = "none"; this.style.WebkitTransform = "none"; this.children[0].classList.remove("light-on"); }); }); var closeBtn = $(".close"); closeBtn.addEventListener("mouseenter", function(){ audio.play(); }); closeBtn.addEventListener("click", function(){ videoBg.classList.remove("active"); var imageSelected; imagesCtr.filter(function(x){ if(x.classList.contains("selected")){ return imageSelected = x; } }); var index = parseInt(imageSelected.children[0].getAttribute("data-index")); tlText.staggerTo([title, detail], .15, { y: 0, opacity: 1 }, .15) tl .to(imageSelected, .15, { delay: .15, opacity: 1, y: 0, onComplete: nextTl }) .set(imageSelected, { className: "-=selected disabled", attr: {"style": "none"} }) prevSiblings(index).map(function(x){ tl .to(imagesCtr[x], .15, { opacity: 1, y: 0, delay: -.05 }) .set(imagesCtr[x], { className: "-=disabled", attr: {"style": "none"} }) }); function nextTl() { nextSiblings(imagesLength, index).map(function(x){ tlAdditional .to(imagesCtr[x], .15, { opacity: 1, y: 0, delay: -.05 }) .set(imagesCtr[x], { className: "-=disabled", attr: {"style": "none"} }) }) } }); balapaCop("Apple TV Interaction", "rgba(255,255,255,.8)"); </script>
@font-face { font-family: "San Francisco"; font-weight: 400; src: url("https://applesocial.s3.amazonaws.com/assets/styles/fonts/sanfrancisco/sanfranciscodisplay-regular-webfont.woff"); } html, body { position: relative; height: 100%; } body { font-family: "San Francisco"; -webkit-transform-style: preserve-3d; -moz-transform-style: preserve-3d; -ms-transform-style: preserve-3d; -o-transform-style: preserve-3d; transform-style: preserve-3d; -webkit-transform: perspective(1600px); -moz-transform: perspective(1600px); -ms-transform: perspective(1600px); -o-transform: perspective(1600px); transform: perspective(1600px); overflow: hidden; } .video-bg { position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%; z-index: 10; display: table; pointer-events: none; opacity: 0; transition: .3s all ease; background: rgba(0, 0, 0, 0.6); -webkit-transform: scale(1.1); -moz-transform: scale(1.1); -ms-transform: scale(1.1); -o-transform: scale(1.1); transform: scale(1.1); } .video-bg.active { opacity: 1; -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); -o-transform: scale(1); transform: scale(1); pointer-events: auto; } .video-bg .text-content { display: table-cell; vertical-align: middle; text-align: center; } .video-bg .par { color: #fff; line-height: 1.5; margin-bottom: 40px; font-size: 20px; opacity: .8; } .video-bg button { padding: 15px 40px; border: none; font-size: 16px; background: #fff; color: #000; border-radius: 3px; cursor: pointer; box-shadow: 0 4px 20px 2px rgba(0, 0, 0, 0.25); transition: 0.2s all cubic-bezier(0.175, 0.885, 0.32, 1.275); will-change: transform; } .video-bg button:hover { -webkit-transform: scale(1.1); -moz-transform: scale(1.1); -ms-transform: scale(1.1); -o-transform: scale(1.1); transform: scale(1.1); } .video-bg button:active { -webkit-transform: scale(1); -moz-transform: scale(1); -ms-transform: scale(1); -o-transform: scale(1); transform: scale(1); } .video-bg button:focus { outline: none; } .translucent-ctr { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 9; filter: blur(30px); -webkit-filter: blur(30px); background: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/111167/yosemite.jpg") no-repeat center center/cover; -webkit-transform: scale(1.2); -moz-transform: scale(1.2); -ms-transform: scale(1.2); -o-transform: scale(1.2); transform: scale(1.2); } .translucent-ctr .translucent { position: absolute; top: 0; right: 0; bottom: 0; left: 0; background: #f5f5f5; opacity: .5; } .slider-ctr { overflow: scroll; position: fixed; top: 0; right: 0; bottom: 0; left: 0; scroll-snap-type: proximity; scroll-snap-destination: 30px 0; z-index: 9; } .slider-ctr.disabled { pointer-events: none; } .slider-ctr .text-content { position: fixed; top: 60px; left: 60px; } .slider-ctr .title { font-size: 30px; margin-bottom: 10px; color: #555; } .slider-ctr .par { color: #777; } .slider-scroll { position: absolute; top: 0; right: 0; bottom: 0; left: 0; width: 3060px; padding: 0 30px; box-sizing: content-box; } .slider-scroll .slide { width: 340px; height: 100%; float: left; box-sizing: border-box; padding: 0 30px; display: table; scroll-snap-coordinate: 0 0; } .slider-scroll figure { display: table-cell; vertical-align: middle; width: 100%; } .slider-scroll .image-ctr { width: 100%; position: relative; transition: 0.2s all cubic-bezier(0.175, 0.885, 0.32, 1.275); cursor: pointer; will-change: transform; } .slider-scroll .image-ctr.disabled { pointer-events: none; transition: none; } .slider-scroll .image-ctr:hover { -webkit-transform: scale(1.2); -moz-transform: scale(1.2); -ms-transform: scale(1.2); -o-transform: scale(1.2); transform: scale(1.2); } .slider-scroll .image-ctr figcaption { position: absolute; right: 0; bottom: -40px; left: 0; font-size: 16px; line-height: 40px; text-align: center; color: #fff; letter-spacing: 1px; opacity: 0; transition: .15s opacity ease; } .slider-scroll .image-ctr:hover figcaption { opacity: 1; transition: .15s opacity ease .1s; } .slider-scroll .image { box-shadow: 0 4px 20px 2px rgba(0, 0, 0, 0.25); border-radius: 3px; width: 100%; height: 417px; position: relative; background: no-repeat center center / cover; } .slider-scroll .image .light { position: absolute; top: 0; right: 0; bottom: 0; left: 0; z-index: 9; opacity: 0; transition: .15s opacity ease; border-radius: 3px; } .slider-scroll .image .light.light-on { opacity: 1; } .slider-scroll .image:before { content: ""; position: absolute; top: 0; right: 0; bottom: 0; left: 0; box-shadow: 0 30px 30px rgba(0, 0, 0, 0.5); transition: .15s all ease-out; opacity: 0; border-radius: 5px; } .slider-scroll .image:hover:before { opacity: 1; } .slider-scroll .image.shawshank { background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/111167/shawshank.jpg"); } .slider-scroll .image.godfather { background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/111167/godfather.jpg"); } .slider-scroll .image.godfather2 { background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/111167/godfather2.jpg"); } .slider-scroll .image.darkknight { background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/111167/darkknight_copy.jpg"); } .slider-scroll .image.twelveangrymen { background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/111167/twelveangrymen.jpg"); } .slider-scroll .image.django { background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/111167/django.jpg"); } .slider-scroll .image.goodbadugly { background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/111167/goodbadugly.jpg"); } .slider-scroll .image.deadpool { background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/111167/deadpool.jpg"); } .slider-scroll .image.wallflower { background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/111167/wallflower.jpg"); } .copyright { z-index: 99; }

Related: See More


Questions / Comments: