<div class="container"> <header class="header"> <a class="header__logo">LOGO</a> <nav class="header__menu"> <ul class="header__menu__list"> <li class="header__menu__item"><a class="header__menu__link">works</a></li> <li class="header__menu__item"><a class="header__menu__link">culture</a></li> <li class="header__menu__item"><a class="header__menu__link">news</a></li> <li class="header__menu__item"><a class="header__menu__link">careers</a></li> <li class="header__menu__item"><a class="header__menu__link">contact</a></li> </ul> </nav> </header> <!-- Container for all sliders, and pagination --> <main class="sliders-container"> <!-- Here will be injected sliders for images, numbers, titles and links --> <!-- Simple pagination for the slider --> <ul class="pagination"> <li class="pagination__item"><a class="pagination__button"></a></li> <li class="pagination__item"><a class="pagination__button"></a></li> <li class="pagination__item"><a class="pagination__button"></a></li> <li class="pagination__item"><a class="pagination__button"></a></li> </ul> </main> <footer class="footer"> </footer> </div> <script src="https://rawgit.com/lmgonzalves/momentum-slider/master/dist/momentum-slider.min.js"></script> .ms--images { position: relative; overflow: hidden; } .ms--images.ms-container--horizontal { width: 100%; height: 400px; max-width: 100%; } .ms--images.ms-container--horizontal .ms-track { left: calc(50% - 350px); } .ms--images.ms-container--horizontal .ms-slide { display: inline-flex; } .ms--images .ms-track { display: flex; position: absolute; white-space: nowrap; padding: 0; margin: 0; list-style: none; } .ms--images .ms-slide { align-items: center; justify-content: center; width: 700px; height: 400px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .ms--images { left: calc(50% - 280px); } .ms--images.ms-container--horizontal .ms-track { left: -70px; } .ms--images .ms-slide:nth-child(1) .ms-slide__image { background-image: url("https://cdn.jsdelivr.net/gh/lmgonzalves/momentum-slider@3b3037f7f1bab402fe3c75cd20ab18e04e1cbe0b/portfolio-carousel/img/harvey-gibson-498362-unsplash.jpg"); } .ms--images .ms-slide:nth-child(2) .ms-slide__image { background-image: url("https://cdn.jsdelivr.net/gh/lmgonzalves/momentum-slider@3b3037f7f1bab402fe3c75cd20ab18e04e1cbe0b/portfolio-carousel/img/andre-hunter-461305-unsplash.jpg"); } .ms--images .ms-slide:nth-child(3) .ms-slide__image { background-image: url("https://cdn.jsdelivr.net/gh/lmgonzalves/momentum-slider@3b3037f7f1bab402fe3c75cd20ab18e04e1cbe0b/portfolio-carousel/img/joanna-nix-389128-unsplash.jpg"); } .ms--images .ms-slide:nth-child(4) .ms-slide__image { background-image: url("https://cdn.jsdelivr.net/gh/lmgonzalves/momentum-slider@3b3037f7f1bab402fe3c75cd20ab18e04e1cbe0b/portfolio-carousel/img/jurica-koletic-321003-unsplash.jpg"); } .ms--images .ms-slide__image-container { width: 80%; height: 80%; background-color: rgba(0, 0, 0, 0.3); overflow: hidden; } .ms--images .ms-slide__image { width: 100%; height: 100%; background-size: cover; } .ms--numbers { position: relative; overflow: hidden; } .ms--numbers.ms-container--horizontal { width: 240px; height: 240px; max-width: 100%; } .ms--numbers.ms-container--horizontal .ms-track { left: calc(50% - 120px); } .ms--numbers.ms-container--horizontal .ms-slide { display: inline-flex; } .ms--numbers .ms-track { display: flex; position: absolute; white-space: nowrap; padding: 0; margin: 0; list-style: none; } .ms--numbers .ms-slide { align-items: center; justify-content: center; width: 240px; height: 240px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .ms--numbers { position: absolute; left: calc(50% - 380px); top: calc(50% - 300px); z-index: -1; pointer-events: none; } .ms--numbers .ms-slide { font-size: 9em; font-weight: 900; color: rgba(255, 255, 255, 0.2); } .ms--titles { position: relative; overflow: hidden; } .ms--titles.ms-container--vertical { width: 400px; height: 170px; max-height: 100%; } .ms--titles.ms-container--vertical .ms-track { flex-direction: column; top: calc(50% - 85px); } .ms--titles.ms-container--vertical.ms-container--reverse .ms-track { flex-direction: column-reverse; top: auto; bottom: calc(50% - 85px); } .ms--titles.ms-container--vertical .ms-slide { display: flex; } .ms--titles .ms-track { display: flex; position: absolute; white-space: nowrap; padding: 0; margin: 0; list-style: none; } .ms--titles .ms-slide { align-items: center; justify-content: center; width: 400px; height: 170px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .ms--titles { position: absolute; left: calc(50% - 420px); top: calc(50% - 85px); z-index: 1; pointer-events: none; } .ms--titles .ms-track { white-space: normal; } .ms--titles .ms-slide { font-size: 3.3em; font-weight: 600; } .ms--titles .ms-slide h3 { margin: 0; text-shadow: 1px 1px 2px black; } .ms--links { position: relative; overflow: hidden; } .ms--links.ms-container--vertical { width: 120px; height: 60px; max-height: 100%; } .ms--links.ms-container--vertical .ms-track { flex-direction: column; top: calc(50% - 30px); } .ms--links.ms-container--vertical .ms-slide { display: flex; } .ms--links .ms-track { display: flex; position: absolute; white-space: nowrap; padding: 0; margin: 0; list-style: none; } .ms--links .ms-slide { align-items: center; justify-content: center; width: 120px; height: 60px; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .ms--links { position: absolute; left: calc(50% - 420px); top: calc(50% + 105px); z-index: 1; } .ms--links .ms-track { white-space: normal; } .ms--links .ms-slide__link { font-weight: 600; padding: 5px 0 8px; border-bottom: 2px solid white; cursor: pointer; } .pagination { display: flex; position: absolute; left: calc(50% - 420px); top: calc(100%); list-style: none; margin: 0; padding: 0; overflow: hidden; z-index: 1; } .pagination__button { display: inline-block; position: relative; width: 36px; height: 20px; margin: 0 5px; cursor: pointer; } .pagination__button:before, .pagination__button:after { content: ""; position: absolute; left: 0; top: calc(50% - 1px); width: 100%; box-shadow: 0 1px 0 #0B0D14; } .pagination__button:before { height: 2px; background-color: #6A3836; } .pagination__button:after { height: 3px; background-color: #DC4540; opacity: 0; transition: 0.5s opacity; } .pagination__item--active .pagination__button:after { opacity: 1; } @media screen and (max-width: 860px) { .ms--numbers { left: calc(50% - 120px); } .ms--titles { left: calc(50% - 200px); top: calc(50% - 135px); text-align: center; } .ms--links { left: calc(50% - 60px); top: calc(50% + 80px); } .pagination { left: 50%; top: calc(100% - 50px); transform: translateX(-50%); } } @media screen and (max-width: 600px) { .ms--images { overflow: visible; } } @media screen and (max-width: 400px) { .ms--titles .ms-slide { transform: scale(0.8); } } *, *:before, *:after { box-sizing: border-box; } body { color: white; background-color: #1B1C21; overflow: hidden; } a { color: white; text-decoration: none; cursor: pointer; } .container { position: relative; display: flex; flex-direction: column; min-height: 100vh; background-color: rgba(0, 0, 0, 0.1); } .container:before { content: ""; position: absolute; left: -150%; top: 0; width: 300%; height: 100%; background-color: rgba(0, 0, 0, 0.3); transform: rotate(45deg); z-index: -1; } .header { display: flex; align-items: center; padding: 30px; } .header__logo { font-size: 1.3em; font-weight: 900; letter-spacing: -1px; } .header__logo span { display: inline-block; transform: translateY(4px) rotate(180deg); pointer-events: none; } .header__menu { margin-left: auto; } .header__menu__list, .footer__menu__list { display: flex; list-style: none; margin: 0; padding: 0; } .header__menu__link { margin-left: 50px; } .footer { display: flex; justify-content: flex-end; align-items: center; padding: 30px; } .footer__menu__link { margin-left: 50px; color: rgba(255, 255, 255, 0.5); } .sliders-container { position: relative; display: flex; align-items: center; justify-content: center; flex: 1; } @media screen and (max-width: 860px) { .header__menu, .footer { display: none; } } (function() { var slidersContainer = document.querySelector('.sliders-container'); // Initializing the numbers slider var msNumbers = new MomentumSlider({ el: slidersContainer, cssClass: 'ms--numbers', range: [1, 4], rangeContent: function (i) { return '0' + i; }, style: { transform: [{scale: [0.4, 1]}], opacity: [0, 1] }, interactive: false }); // Initializing the titles slider var titles = [ 'King of the Ring Fight', 'Sound of Streets', 'Urban Fashion', 'Windy Sunset' ]; var msTitles = new MomentumSlider({ el: slidersContainer, cssClass: 'ms--titles', range: [0, 3], rangeContent: function (i) { return '<h3>'+ titles[i] +'</h3>'; }, vertical: true, reverse: true, style: { opacity: [0, 1] }, interactive: false }); // Initializing the links slider var msLinks = new MomentumSlider({ el: slidersContainer, cssClass: 'ms--links', range: [0, 3], rangeContent: function () { return '<a class="ms-slide__link">View Case</a>'; }, vertical: true, interactive: false }); // Get pagination items var pagination = document.querySelector('.pagination'); var paginationItems = [].slice.call(pagination.children); // Initializing the images slider var msImages = new MomentumSlider({ // Element to append the slider el: slidersContainer, // CSS class to reference the slider cssClass: 'ms--images', // Generate the 4 slides required range: [0, 3], rangeContent: function () { return '<div class="ms-slide__image-container"><div class="ms-slide__image"></div></div>'; }, // Syncronize the other sliders sync: [msNumbers, msTitles, msLinks], // Styles to interpolate as we move the slider style: { '.ms-slide__image': { transform: [{scale: [1.5, 1]}] } }, // Update pagination if slider change change: function(newIndex, oldIndex) { if (typeof oldIndex !== 'undefined') { paginationItems[oldIndex].classList.remove('pagination__item--active'); } paginationItems[newIndex].classList.add('pagination__item--active'); } }); // Select corresponding slider item when a pagination button is clicked pagination.addEventListener('click', function(e) { if (e.target.matches('.pagination__button')) { var index = paginationItems.indexOf(e.target.parentNode); msImages.select(index); } }); })(); Навигация по записям Cards Carousel 3D Animation slider effect