JSFiddle - React, Tailwind, and code Playground
HTML
<div class="container">
<ul id="slider">
<li><img src="https://www.dropbox.com/s/3m9y75h947vus4v/WP_000098_1.jpg?dl=1" alt="" /></li>
<li><img src="https://www.dropbox.com/s/xn9cdo1itkvxxzq/WP_000122.jpg?dl=1" alt="" /></li>
<li><img src="https://www.dropbox.com/s/3k261lxwm76jzh5/WP_000125.jpg?dl=1" alt="" /></li>
<li><img src="https://www.dropbox.com/s/lm49ldixkusry9k/WP_000161.jpg?dl=1" alt="" /></li>
<li><img src="https://www.dropbox.com/s/enfwdolr6jmx13q/WP_000191.jpg?dl=1" alt="" /></li>
</ul>
<ul id="dots">
<li class="active"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<button id="prev">Prev</button>
<button id="next">Next</button>
CSS
* {
font: bold 14px Helvetica, Arial, sans-serif;
background: #F1F1F1;
}
.container {
width:800px;
margin: 60px auto;
text-align: center;
}
#slider {
margin: 0 auto;
list-style: none;
position: relative;
width: 5000px;
height: 420px;
padding: 10px;
box-shadow: 0 0 20px rgba(0, 0, 0, 0.4);
}
#slider img {
position: absolute;
top: 20px;
left: 40px;
max-width:600px;
max-height:400px;
}
#dots {
list-style:none;
padding:0px;
margin-bottom: 8px;
}
#dots li {
display:inline-block;
border-radius:10px;
width:10px;
height:10px;
margin: 0 5px;
border:2px solid #2284A1;
background: white;
cursor:pointer;
}
#dots li.active {
background:#2284A1;
}
JavaScript
$(document).ready(function () {
var change_img_time = 4000,
transition_speed = 400;
var listItems = $("#slider").children('li'),
dotItems = $('#dots').children('li'),
listLen = listItems.length,
current,
changeTimeout;
function moveTo(newIndex) {
var i = newIndex;
if (newIndex == 'prev') {
i = (current > 0) ? (current - 1) : (listLen - 1);
}
if (newIndex == 'next') {
i = (current < listLen - 1) ? (current + 1) : 0;
}
dotItems.removeClass('active')
.eq(i).addClass('active');
listItems.fadeOut(transition_speed)
.eq(i).fadeIn(transition_speed);
current = i;
//resets time interval if user clicks on slider dot; then begin automated slider
clearTimeout(changeTimeout);
changeTimeout = setTimeout(function() { moveTo('next'); }, change_img_time);
};
// Event handlers
$("#dots li").click(function () {
var i = $('#dots li').index(this);
moveTo(i);
});
$("#prev").click(function () {
moveTo('prev');
});
$("#next").click(function () {
moveTo('next');
});
//initialize slider on load
moveTo('next');
});