|
| ||||||
|
Эффект батута для просмотра изображенийИнформация, представленная на этой странице ориентирована в первую очередь для начинающих web-мастеров. Сейчас мы рассмотрим интересный способ просмотра изображений с эффектом батута. При клике мышкой на стрелочку, расположенную чуть ниже изображения, последнее имитирует подпрыгивание на батуте, сменяясь следующим. Помимо этого смену изображений можно производить простым перетаскиванием мышью в любую сторону.
Если возникают проблемы при скачивании файлов, например, через браузер, скопируйте ссылку (правая кнопка мыши → копировать адрес ссылки) и скачайте файл через Download Master. Установка на сайт
В общем-то на этом можно и закончить. Выполнив эти два шага, можно самостоятельно легко разобраться и применить данный способ, но, по традиции жанра и, если есть желание, можно ознакомиться с пояснениями. Первым элементом в коде будет форма SVG, которая играет не последнюю роль в реализации эффекта: <div id="morph-shape" class="morph-shape" data-morph-next="M301,301c0,0-83.8-21-151-21C71.8,280-1,301-1,301s21-65.7,21-151C20,79.936-1-1-1-1s73,11,151,11c85 0,151-11,151-11s-21,66.43-21,151C280,229.646,301,301,301,301z"> <svg width="100%" height="100%" viewBox="0 0 300 300" preserveAspectRatio="none"> <path d="M301,301c0,0-83.8,0-151,0c-78.2,0-151,0-151,0s0-65.7,0-151C-1,79.936-1-1-1-1s73,0,151,0c85,0,151,0,151,0s0,66.43,0,151 C301,229.646,301,301,301,301z"> </svg> </div> В этом участке кода пропишите пути к вашим изображениям и заполните все необходимые поля с названиями: <div class="stack"> <ul id="elasticstack" class="stack__images"> <li><img src="img/1.jpg" alt="Су-27"></li> <li><img src="img/2.jpg" alt="Т-50"></li> <li><img src="img/3.jpg" alt="Су-34"></li> <li><img src="img/4.jpg" alt="Як-130"></li> <li><img src="img/5.jpg" alt="Су-30"></li> <li><img src="img/6.jpg" alt="МиГ-35"></li> <li><img src="img/7.jpg" alt="Су-47"></li> </ul> <button id="stack-next" class="stack__next"><i class="icon icon-down"></i><span>Next</span></button> <ul id="stack-titles" class="stack__titles"> <li class="current"> <p>Су-27 - многоцелевой истребитель-перехватчик</p> </li> <li> <p>Истребитель пятого поколения ПАК ФА Т-50</p> </li> <li> <p>Су-34 - фронтовой бомбардировщик</p> </li> <li> <p>Як-130 - учебно-боевой самолет</p> </li> <li> <p>Су-30 - двухместный истребитель поколения «4+»</p> </li> <li> <p>Истребитель МиГ-35</p> </li> <li> <p>Российский истребитель Су-47 (С-37) «Беркут»</p> </li> </ul> </div> Форма morph должна быть растянута на всю страницу:
.morph-shape {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
.morph-shape svg {
position: absolute;
margin: 0;
pointer-events: none;
}
Стили для картинок определяются свойством stack. Используется перспектива в ul для изображений, так чтобы можно было позиционировать их в 3D-пространстве. Последние два свойства в этом блоке отвечают за возможность смены картинок путём перетаскивания.
.stack ul {
position: relative;
margin: 0 auto;
padding: 0;
list-style: none;
}
.stack ul li {
position: absolute;
width: 100%;
opacity: 0;
}
ul.stack__images {
width: 400px;
height: 300px;
z-index: 10;
perspective: 1000px;
perspective-origin: 50% -50%;
}
@media screen and (max-height: 530px), screen and (max-width: 400px) {
ul.stack__images {
width: 260px;
height: 195px;
}
}
.stack__images li {
top: 0;
z-index: 1;
transform: translate3d(0, 0, -180px);
transform-style: preserve-3d;
}
.stack__images li img {
display: block;
max-width: 100%;
pointer-events: none;
}
.stack__images li:hover {
cursor: url(../img/cursor_vulcan.png), auto;
}
.stack__images li:active {
cursor: -webkit-grabbing;
cursor: grabbing;
}
.stack__images li.animate {
transition: all 0.3s ease-out;
}
.stack__images li.move-back {
transition-timing-function: cubic-bezier(0.175, 0.885, 0.470, 1.515);
}
Проверьте путь к изображению курсора. Другие элементы, такие как кнопки навигации и названия имеют следующие стили:
.stack__next {
border: none;
background: none;
display: block;
padding: 0;
overflow: hidden;
width: 36px;
height: 36px;
margin: 10px auto 0;
font-size: 30px;
position: relative;
cursor: pointer;
color: #067ba7;
}
.stack__next:hover {
color: #fff;
}
.stack__next:focus {
outline: none;
}
.stack__next span {
position: absolute;
top: 200%;
}
ul.stack__titles {
height: 18vh;
max-width: 560px;
width: 95%;
}
.stack__titles blockquote {
margin: 0;
text-align: center;
font-size: 1.4em;
}
.stack__titles blockquote footer {
font-size: 50%;
padding-bottom: 1em;
font-family: 'Montserrat', Arial, sans-serif;
}
.stack__titles li {
pointer-events: none;
transition: opacity 0.45s ease;
}
.stack__titles li.current {
opacity: 1;
pointer-events: auto;
}
В демо-версии №2 сделано небольшое изменение, благодаря которому появилась возможность вращения контейнера на 10 градусов на Z-оси и -6deg на X-оси:
.morph-shape svg {
fill: #01AEF0;
transition: fill 0.1s ease-out;
}
.navigate-next .morph-shape svg {
fill: #01a0dc;
transition-duration: 0.45s;
}
.container {
transition: transform 0.1s cubic-bezier(0.6, 0, 0.5, 1);
}
.demo-1.navigate-next .container {
transition-duration: 0.45s;
transform: translate3d(0, 0, -600px);
}
.demo-2.navigate-next .container {
transition-duration: 0.45s;
transform: rotate3d(-0.5, 0, 1, -6deg) translate3d(0, 0, -600px);
}
.demo-2 .morph-shape svg {
fill: #A2CD72;
}
.demo-2.navigate-next .morph-shape svg {
fill: #95C264;
}
Вот и все! Буду надеяться, что эффект и урок Вам понравились. Спасибо за внимание. Посещайте мой сайт. Пока! L.M. | |||||
| ||||||