Слайдер с парящими изображениями на jQuery

Нам необходимо создать маски наложения, это будет придавать эффект стопки изображений, при этом немного повернутой по оси. Это мы рассмотрим немного позже, сейчас давайте рассмотрим простую разметку.

Шаг 1. HTML

HTML структура очень проста, нам нужно два DIV с изображениями для содержания и его описания. Для примера были взяты изображения тем для wordpress.

Код
<div id="container">
<div id="itemlist">
<img src="images/busby.jpg" alt="Busby" id="busby">
<img src="images/gridly.jpg" alt="Gridly" id="gridly">
<!-- to n image -->
</div>
<div id="itemdescription">
<span data-for="busby">Busby Theme</span>
<span data-for="gridly">Gridly Theme</span>
<!-- to n description -->
</div>
</div>


Разметка достаточно простая. Каждый элемент содержит атрибут с описанием и id. Давайте перейдем к следующему шагу.

Шаг 2. CSS

Как вы заметили в демо наши изображения накладываются друг на друга, для этого нам необходимо указать отступ в -80px, следовательно отступ для следующего изображения будет -160px. Кроме этого нам необходимо указать общие параметры для контейнера:

Код
#itemdescription {
position: relative;
width: 400px;
margin: 0 auto;
left: 6em;
top: 2em;
}

#itemdescription span {
display: none;
}

#itemlist {
display: block;
width: 400px;
margin: 3em auto;
position: relative;
transform-style: preserve-3d;
}

#itemlist img {
position: absolute;
cursor: pointer;
left: 0;
box-shadow: 0px 15px 50px rgba(0,0,0,0.4);
}

#itemlist img:hover {
top: -5px;
}

#itemlist img.item-0 {
z-index: 4;
transform: scale(1);

}

#itemlist img.item-1 {
z-index: 3;
left: -80px;
transform: scale(0.9);
}

#itemlist img.item-2 {
z-index: 2;
left: -160px;
transform: scale(0.8);
}

#itemlist img.item-3 {
z-index: 1;
left: -240px;
transform: scale(0.7);
}


Нам необходимо, чтобы изображения заменяли друг друга с красивой анимацией, для этого мы установим небольшие трансформации полета изображений.

Код
.transition {
transition: 0.5s ease-out;
}

.show {
animation: show 1s linear;
}

@keyframes show{
25% {
left: -450px;
}

50% {
z-index: 5;
left: -500px;
transform: rotate3d(0,1,0,0deg);
}

70% {
z-index: 5;
left: -250px;
transform: rotate3d(0,1,0,180deg);
}

100% {
z-index: 5;
left: 0px;
transform: rotate3d(0,1,0,360deg);
}
}

Шаг 3. jQuery

В то время как вы нажимаете на желаемое изображение, стопка с картинками немного смещается назад, также мы добавим класс transition, для плавного движения:

Код
//Перемещение элементов
window.setTimeout(function () {
for(var i = thisOrder; i >= 0; i--) {
//Изменить порядок, положение
movedItem = item.filter('[data-order=' + i + ']');
newOrder= parseInt(movedItem.attr('data-order')) + 1;
className = 'item-' + newOrder;
//Перемещение с переходом
movedItem.removeClass().addClass('transition ' + className).attr('data-order', newOrder);
//Удалить переход
item.on('transitionend webkitTransitionEnd MSTransitionEnd oTransitionEnd', function() {
item.removeClass('transition');
});
}
}, 500);

Вот и все. Готово!

  • FalleN

  • 4494

  • 1

  • 194

Ссылки на статью:

Похожие статьи: