JSFiddle - React, Tailwind, and code Playground
by BurpmanJunior
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
<div data-mmslider="">
<ul class="mm-slider">
<li>
<img src="https://images.unsplash.com/photo-1438755582627-221038b62986?fit=crop&fm=jpg&h=400&q=80&w=1200" />
</li>
<li>
<img src="https://images.unsplash.com/photo-1438029071396-1e831a7fa6d8?fit=crop&fm=jpg&h=500&q=80&w=1200" />
</li>
<li>
<img src="https://images.unsplash.com/photo-1437422061949-f6efbde0a471?fit=crop&fm=jpg&h=400&q=80&w=1200" />
</li>
<li>
<img src="https://images.unsplash.com/photo-1429734160945-4f85244d6a5a?fit=crop&fm=jpg&h=400&q=80&w=1200" />
</li>
<li>
<img src="https://images.unsplash.com/photo-1431578500526-4d9613015464?fit=crop&fm=jpg&h=800&q=80&w=1200" />
</li>
</ul>
</div>
SCSS
/** CORE **/
html, body {
padding: 0;
margin: 0;
font-family: sans-serif;
background-color: #f5f5f5;
}
* {
box-sizing: border-box;
}
img {
max-width: 100%;
}
/** SLIDER **/
ul.mm-slider{
display: block;
margin: 0;
padding: 0;
height: auto;
li{
display: block;
list-style-type: none;
padding: 0;
img{
display: block;
}
}
}
.mmslider-init{
width: 80%;
margin: 20px auto;
position: relative;
overflow: hidden;
padding: 10px;
background-color: #fff;
border: 1px solid #ccc;
box-shadow: 0 7px 10px -5px rgba(0, 0, 0, 0.15);
ul.mm-slider{
position: relative;
display: block;
width: 100%;
overflow: hidden;
transition: height 500ms;
user-select: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
li{
position: absolute;
width: 100%;
text-align: center;
font-size: 0;
img{
display: inline-block;
}
}
}
.mm-controls-prev,
.mm-controls-next{
position: absolute;
top: 50%;
transform: translateY(-50%);
font-size: 32px;
color: #fff;
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
cursor: pointer;
opacity: 0.5;
transition: padding 300ms, opacity 300ms;
&:hover,
&:focus{
opacity: 1;
padding: 0 10px;
}
&:after{
font-family: 'FontAwesome';
line-height: 1;
}
&:before{
content: '';
position: absolute;
top: -1000%;
right: -10px;
bottom: -1000%;
left: -10px;
}
}
.mm-controls-prev{
left: 20px;
&:after{
content: "\f053";
}
}
.mm-controls-next{
right:...
JavaScript
/**
* Image slider - height adjust
*/
mmslider = {} || mmslider;
mmslider.slideDuration = 5000;
mmslider.animationDelay = 500;
mmslider.sliders = [];
mmslider.init = function () {
$('[data-mmslider]').each(function (i, e) {
mmslider.setup(i, e);
mmslider.sliders[i].timeout = null;
mmslider.sliders[i].running = false;
mmslider.heightCalc(i);
mmslider.resetTimeout(i);
mmslider.buildControls(i);
});
$(window).resize(mmslider.heightCalcAll);
}
mmslider.setup = function (i, e) {
mmslider.sliders[i] = {
slides: []
};
mmslider.sliders[i].elem = e;
mmslider.sliders[i].ul = $('ul:first-child', e);
$('li > img:first-child', e).each(function (n, s) {
mmslider.sliders[i].slides[n] = $(s).attr('src').trim();
});
$('ul:first-child', e).html('<li class="current-slide" style="left: 0;"><img src="' + mmslider.sliders[i].slides[0] + '" /></li>');
mmslider.sliders[i].currentSlide = 0;
mmslider.preloadSlides(i);
$(e).addClass('mmslider-init');
}
mmslider.buildControls = function (i) {
_s = mmslider.sliders[i];
$(_s.elem).append($('<span/>').addClass('mm-controls-prev'));
$(_s.elem).append($('<span/>').addClass('mm-controls-next'));
$('.mm-controls-prev', _s.elem).click(function () {
mmslider.previousSlide(i);
});
$('.mm-controls-next', _s.elem).click(function () {
mmslider.nextSlide(i);
});
}
mmslider.preloadSlides = function (i) {
var _s = mmslider.sliders[i].slides;
for (var n = 0; n < _s.length; n++) {
var img = new Image();
img.src = _s[n];
}
}
mmslider.heightCalc = function (i) {
return $(mmslider.sliders[i].ul).height($('li.current-slide > img', mmslider.sliders[i].ul).height());
}
mmslider.heightCalcAll = function () {
for (var i = 0; i < mmslider.sliders.length; i++) {
mmslider.heightCalc(i);
}
}
mmslider.resetTimeout = function (i) {
if (mmslider.slideDuration)...