| ||||||
|
Эффект батута для просмотра изображенийИнформация, представленная на этой странице ориентирована в первую очередь для начинающих web-мастеров. Сейчас мы рассмотрим интересный способ просмотра изображений с эффектом батута. При клике мышкой на стрелочку, расположенную чуть ниже изображения, последнее имитирует подпрыгивание на батуте, сменяясь следующим. Помимо этого смену изображений можно производить простым перетаскиванием мышью в любую сторону.
Если возникают проблемы при скачивании файлов, например, через браузер, скопируйте ссылку (правая кнопка мыши → копировать адрес ссылки) и скачайте файл через Download Master. Установка на сайтСкачайте учебный материал в отдельную папку на компьютере, распакуйте, проверьте работу эффекта, открыв поочередно файлы demo.html и demo2html в вашем браузере. Если всё работает, подберите изображения, разместите их в папке img и закачайте все файлы в соответствующие папки на сервер своего сайта. В индексных файлах проверьте соответствие путей к скриптам и стилям. В общем-то на этом можно и закончить. Выполнив эти два шага, можно самостоятельно легко разобраться и применить данный способ, но, по традиции жанра и, если есть желание, можно ознакомиться с пояснениями. Первым элементом в коде будет форма 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. | |||||
|