Слайдер с парящими изображениями на jQuery
Нам необходимо создать маски наложения, это будет придавать эффект стопки изображений, при этом немного повернутой по оси. Это мы рассмотрим немного позже, сейчас давайте рассмотрим простую разметку.
Шаг 1. HTML
HTML структура очень проста, нам нужно два DIV с изображениями для содержания и его описания. Для примера были взяты изображения тем для wordpress.
Разметка достаточно простая. Каждый элемент содержит атрибут с описанием и id. Давайте перейдем к следующему шагу.
Шаг 2. CSS
Как вы заметили в демо наши изображения накладываются друг на друга, для этого нам необходимо указать отступ в -80px, следовательно отступ для следующего изображения будет -160px. Кроме этого нам необходимо указать общие параметры для контейнера:
Нам необходимо, чтобы изображения заменяли друг друга с красивой анимацией, для этого мы установим небольшие трансформации полета изображений.
Шаг 3. jQuery
В то время как вы нажимаете на желаемое изображение, стопка с картинками немного смещается назад, также мы добавим класс transition, для плавного движения:
Вот и все. Готово!
Шаг 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>
<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);
}
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);
}
}
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);
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 -
4562 -
1 -
215
Но только нужно ставить наверное на те модули которые обновляться должны не раньше через пару тройку минут
С Уважением, Андрей...