JSFiddle - React, Tailwind, and code Playground
by Alexandru Gatea
HTML
<div class="ev-slider" data-slide-one="one" data-slide-two="two">
<div class="ev-slides ">
<div class="slide one">1</div>
<div class="slide two">2</div>
<div class="slide three">3</div>
</div>
<div class="ev-controls">
<button class="prev">prev</button>
<button class="next">next</button>
</div>
</div>
SCSS
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: black;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.ev-slider {
width: 1280px;
height: 550px;
position: relative;
overflow: hidden;
border: 1px solid #fff;
display: flex;
flex-direction: column;
align-items: center;
justify-content: stretch;
.ev-slides {
flex-grow: 1;
position: relative;
overflow: hidden;
width: 100%;
.slide {
width: 640px;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
transition: all 0.75s ease;
position: absolute;
color: #fff;
margin: auto;
&::before {
content: "";
background: rgba(255, 255, 255, 0.1);
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 90%;
height: 90%;
}
}
}
.ev-controls {
height: 50px;
width: 100%;
display: flex;
button {
width: 100%;
border: none;
color: #fff;
background: transparent;
outline: none;
&:active {
background: rgba(255, 255, 255, 0.2);
}
}
}
}
.ev-slider[data-slide-one="one"][data-slide-two="two"] {
.one { left: 0; z-index: 10; }
.two { left: 50%; z-index: 10; }
.three { z-index: 1; transform: scale(0.7); filter: blur(10px);left:25%;}
}
.ev-slider[data-slide-one="two"][data-slide-two="three"] {
.two { left: 0; z-index: 10; }
.three { left: 50%; z-index: 10; }
.one { z-index: 1; transform: scale(0.7); filter: blur(10px);left:25%;}
}
.ev-slider[data-slide-one="three"][data-slide-two="one"] {
.three { left: 0; z-index: 10; }
.one { left: 50%; z-index: 10; }
.two { z-index: 1; transform: scale(0.7); filter: blur(10px);left:25%;}
}
JavaScript
jQuery(document).ready(function($){
var next = $('.next'),
prev = $('.prev'),
eve = $('.ev-slider');
next.on('click', function(){
var activeOne = eve.attr('data-slide-one');
var activeTwo = eve.attr('data-slide-two');
if (activeOne === "one" && activeTwo === "two") {
eve.attr('data-slide-one', 'two').attr('data-slide-two', 'three')
} else if (activeOne === "two" && activeTwo === "three") {
eve.attr('data-slide-one', 'three').attr('data-slide-two', 'one')
} else {
eve.attr('data-slide-one', 'one').attr('data-slide-two', 'two')
}
});
prev.on('click', function(){
var activeOne = eve.attr('data-slide-one');
var activeTwo = eve.attr('data-slide-two');
if (activeOne === "one" && activeTwo === "two") {
eve.attr('data-slide-one', 'three').attr('data-slide-two', 'one')
} else if (activeOne === "two" && activeTwo === "three") {
eve.attr('data-slide-one', 'one').attr('data-slide-two', 'two')
} else {
eve.attr('data-slide-one', 'two').attr('data-slide-two', 'three')
}
});
});