<div class="scene"> <div class="bg"></div> <div class="content"> <div class="block"> <img class="prime-img" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/mousover-img-1.jpg" alt="" /> <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/mousover-img-2.jpg" alt="" class="sec-img" /> <h2 class="link">Whatever 1</h2> <span class="sec-info">Secondary information 1</span> </div> <div class="block"> <img class="prime-img" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/mousover-img-3.jpg" alt="" /> <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/mousover-img-4.jpg" alt="" class="sec-img" /> <h2 class="link">Whatever 2</h2> <span class="sec-info">Secondary information 2</span> </div> <div class="block"> <img class="prime-img" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/mousover-img-5.jpg" alt="" /> <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/mousover-img-6.jpg" alt="" class="sec-img" /> <h2 class="link">Whatever 3</h2> <span class="sec-info">Secondary information 3</span> </div> <div class="block"> <img class="prime-img" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/mousover-img-7.jpg" alt="" /> <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/mousover-img-8.jpg" alt="" class="sec-img" /> <h2 class="link">Whatever 4</h2> <span class="sec-info">Secondary information 4</span> </div> <div class="block"> <img class="prime-img" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/mousover-img-9.jpg" alt="" /> <img src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/mousover-img-10.jpg" alt="" class="sec-img" /> <h2 class="link">Whatever 5</h2> <span class="sec-info">Secondary information 5</span> </div> </div> </div> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> //Скрипт js надо подключать здесь //Автор: Nikolay Talanov. @suez @font-face { src: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/Metropolis_1920.otf); font-family: Metropolis; } @font-face { src: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/PFSquareSansPro-Medium.otf); font-family: pfs-medium; } *, *:before, *:after { box-sizing: border-box; margin: 0; padding: 0; } html, body { height: 100%; overflow: hidden; } .scene { position: relative; height: 100%; border: 10px solid #000; z-index: 50; overflow: hidden; } .bg { position: absolute; z-index: 1; top: calc(50% - 52.5vh - 10px); left: calc(50% - 52.5vw - 10px); width: calc(105% + 20px); height: calc(105% + 20px); background-image: url("https://s3-us-west-2.amazonaws.com/s.cdpn.io/142996/mousover-img-bg.jpg"); background-size: cover; } .content { position: absolute; width: 200rem; height: 127.5rem; left: calc(50% - 100rem); top: calc(50% - 63.75rem); will-change: top, left; z-index: 100; will-change: transform; } .block { position: absolute; } .block:nth-child(1) { top: 15rem; left: 85rem; } .block:nth-child(1) .sec-img { margin-left: 2rem; margin-top: -5rem; } .block:nth-child(1) .link { bottom: 5rem; left: 3rem; } .block:nth-child(1) .sec-info { bottom: 3.5rem; left: 3rem; } .block:nth-child(2) { top: 35rem; left: 135rem; } .block:nth-child(2) .sec-img { margin-left: -10rem; margin-top: -12rem; } .block:nth-child(2) .link { color: #64B5F6; top: 4rem; left: 4rem; } .block:nth-child(2) .sec-info { color: #64B5F6; top: 2.5rem; left: 4rem; } .block:nth-child(3) { top: 80rem; left: 120rem; } .block:nth-child(3) .sec-img { margin-right: -5rem; margin-top: 3rem; } .block:nth-child(3) .link { color: #AB47BC; top: 3rem; left: 4rem; } .block:nth-child(3) .sec-info { color: #AB47BC; top: 6rem; left: 4rem; } .block:nth-child(4) { top: 70rem; left: 40rem; } .block:nth-child(4) .prime-img { display: block; } .block:nth-child(4) .sec-img { display: block; margin-left: 4rem; margin-top: 2rem; } .block:nth-child(4) .link { color: #EF5350; top: 3rem; right: 5rem; } .block:nth-child(4) .sec-info { color: #EF5350; top: 6rem; right: 5rem; } .block:nth-child(5) { top: 30rem; left: 30rem; } .block:nth-child(5) .sec-img { margin-left: -57rem; margin-top: 3rem; } .block:nth-child(5) .link { color: #4CAF50; bottom: 4rem; right: 3rem; } .block:nth-child(5) .sec-info { color: #4CAF50; bottom: 7rem; right: 3rem; } .block img { position: relative; opacity: 0.3; transition: opacity 0.3s, transform 0.5s 0.3s; will-change: transform; } .block .prime-img { z-index: 50; width: 35rem; } .block .sec-img { vertical-align: top; z-index: 100; width: 20rem; } .block .link { position: absolute; z-index: 200; color: #fff; font-family: Metropolis; font-size: 3rem; line-height: 1; cursor: pointer; } .block .sec-info { position: absolute; z-index: 400; color: #fff; font-size: 1.5rem; line-height: 1; font-family: pfs-medium; transform: rotateX(90deg); opacity: 0; transition: transform 0.5s cubic-bezier(0.53, 0.11, 0.76, 1.38), opacity 0.3s 0.5s; will-change: transform; transform-origin: 50% 100%; } .block:hover img { opacity: 1; transform: scale(1.3); } .block:hover .sec-info { opacity: 1; transform: rotateX(0deg); transition: transform 0.5s 0.3s cubic-bezier(0.53, 0.11, 0.76, 1.38), opacity 0.3s; } $(document).ready(function() { function debounce(func, wait, immediate) { var timeout; return function() { var context = this, args = arguments; clearTimeout(timeout); timeout = setTimeout(function() { timeout = null; if (!immediate) func.apply(context, args); }, wait); if (immediate && !timeout) func.apply(context, args); }; }; var winW = $(window).width(), winH = $(window).height(), winWHalf = winW / 2, winHHalf = winH / 2, $cont = $(".content"), $bg = $(".bg"), contW = $cont.width(), contH = $cont.height(), bgW = $bg.width(), bgH = $bg.height(), diffX = (winW - contW) /2, diffY = (winH - contH) /2; var finalX = 0, finalY = 0, finalBgX = 0, finalBgY = 0; var moveContent = function(e) { console.log(bgW + " " + winW); var x = e.pageX, y = e.pageY; finalX = (x - winWHalf) * (contW / winW) / 2; finalY = (y - winHHalf) * (contH / winH) / 2; finalBgX = (x - winWHalf) * (bgW / winW) / 20; finalBgY = (y - winHHalf) * (bgH / winH) / 20; $cont.css("transform", "translate3D(" + (0 - finalX) + "px, " + (0 - finalY) + "px, 0)"); $bg.css("transform", "translate3D(" + (0 - finalBgX) + "px, " + (0 - finalBgY) + "px, 0)"); }; $(document).on("mousemove", moveContent); $(window).on("resize", function() { winW = $(window).width(); winH = $(window).height(); winWHalf = winW / 2; winHHalf = winH / 2; contW = $cont.width(); contH = $cont.height(); bgW = $bg.width(); bgH = $bg.height(); diffX = (winW - contW) /2; diffY = (winH - contH) /2; moveContent({pageX: winWHalf, pageY: winHHalf}); }); }); Навигация по записям Header Animated menu