<div class="gallery">
<div class="gallery__prev"></div>
<div class="gallery__next"></div>
<div class="gallery__stream">
<div class="gallery__item bg-1"></div>
<div class="gallery__item bg-2"></div>
<div class="gallery__item bg-3"></div>
<div class="gallery__item bg-4"></div>
<div class="gallery__item bg-5"></div>
<div class="gallery__item bg-6"></div>
<div class="gallery__item bg-7"></div>
</div>
</div>
/* Global */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background-color: #000;
}
/* Gallery */
.gallery {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 100%;
height: 90%;
max-height: 28vw;
overflow: hidden;
}
.gallery:before,
.gallery:after {
display: block;
content: "";
position: absolute;
top: 0;
width: 20%;
height: 100%;
z-index: 3;
}
.gallery:before {
left: 0;
background: linear-gradient(to right, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 100%);
}
.gallery:after {
right: 0;
background: linear-gradient(to left, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 100%);
}
.gallery__stream {
position: relative;
top: 50%;
transform: translateY(-50%);
width: 100%;
height: 100%;
}
.gallery__item {
position: absolute;
width: 50%;
height: 100%;
transition: 1s all ease;
background-size: cover;
background-repeat: no-repeat;
background-position: center center;
border-radius: 5px;
}
.gallery__item:nth-child(1) {
left: 0;
z-index: 1;
transform: translateX(-100%) scale(.8);
}
.gallery__item:nth-child(2) {
left: 0;
z-index: 2;
transform: translateX(-50%) scale(.8);
}
.gallery__item:nth-child(3) {
left: 50%;
z-index: 4;
transform: translateX(-50%) scale(1);
}
.gallery__item:nth-child(4) {
left: 100%;
z-index: 2;
transform: translateX(-50%) scale(.8);
}
.gallery__item:nth-child(n+5) {
left: 100%;
z-index: 1;
transform: scale(.8);
}
/* Controllers */
.gallery__prev,
.gallery__next {
position: absolute;
top: 50%;
z-index: 4;
width: 50%;
height: 100%;
transform: translateX(-50%) translateY(-50%) scale(.8);
cursor: pointer;
}
.gallery__prev {
left: 0;
}
.gallery__next {
left: 100%;
}
/* Backgrounds */
.bg-1 {
background-image: url(https://res.cloudinary.com/dm7h7e8xj/image/upload/v1554487589/star-wars-1_kgt8dr.jpg);
}
.bg-2 {
background-image: url(https://res.cloudinary.com/dm7h7e8xj/image/upload/v1554487590/star-wars-2_tgzyxe.jpg);
}
.bg-3 {
background-image: url(https://res.cloudinary.com/dm7h7e8xj/image/upload/v1554487591/star-wars-3_bkcmeb.jpg);
}
.bg-4 {
background-image: url(https://res.cloudinary.com/dm7h7e8xj/image/upload/v1554487591/star-wars-4_opgyza.jpg);
}
.bg-5 {
background-image: url(https://res.cloudinary.com/dm7h7e8xj/image/upload/v1554487591/star-wars-5_ulc9tx.jpg);
}
.bg-6 {
background-image: url(https://res.cloudinary.com/dm7h7e8xj/image/upload/v1554487591/star-wars-6_la8whc.jpg);
}
.bg-7 {
background-image: url(https://res.cloudinary.com/dm7h7e8xj/image/upload/v1554487590/star-wars-7_l3fcor.jpg);
}
document.addEventListener('DOMContentLoaded', function() {
var stream = document.querySelector('.gallery__stream');
var items = document.querySelectorAll('.gallery__item');
var prev = document.querySelector('.gallery__prev');
prev.addEventListener('click', function() {
stream.insertBefore(items[items.length - 1], items[0]);
items = document.querySelectorAll('.gallery__item');
});
var next = document.querySelector('.gallery__next');
next.addEventListener('click', function() {
stream.appendChild(items[0]);
items = document.querySelectorAll('.gallery__item');
});
});
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.