JSFiddle - React, Tailwind, and code Playground
by jorgeherrera
HTML
<div class="carousel slide vertical" id="carousel-vertical" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carousel-vertical" data-slide-to="0" class="active"></li>
<li data-target="#carousel-vertical" data-slide-to="1"></li>
<li data-target="#carousel-vertical" data-slide-to="2"></li>
</ol>
<div class="carousel-inner" role="listbox">
<div class="item active"></div>
<div class="item"></div>
<div class="item"></div>
</div>
</div>
CSS
html, body{
width:100%;
height:100%;
background-color:#fff;
}
.carousel-inner,.carousel,.item,.container,.fill {
height:100%;
width:100%;
background-position:center center;
background-size:cover;
}
.slide-wrapper{display:inline;}
.slide-wrapper .container{padding:0px;}
/*------------------------------ vertical bootstrap slider----------------------------*/
.carousel-inner> .item.next , .carousel-inner > .item.active.right{ transform: translate3d(0, 100%, 0); -webkit-transform: translate3d(0, 100%, 0); -ms-transform: translate3d(0, 100%, 0); -moz-transform: translate3d(0, 100%, 0); -o-transform: translate3d(0, 100%, 0); top: 0;}
.carousel-inner > .item.prev ,.carousel-inner > .item.active.left{ transform: translate3d(0,-100%, 0); -webkit-transform: translate3d(0,-100%, 0); -moz-transform: translate3d(0,-100%, 0);-ms-transform: translate3d(0,-100%, 0); -o-transform: translate3d(0,-100%, 0); top: 0;}
.carousel-inner > .item.next.left , .carousel-inner > .item.prev.right , .carousel-inner > .item.active{transform:translate3d(0,0,0); -webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);; -moz-transform:translate3d(0,0,0); -o-transform:translate3d(0,0,0); top:0;}
/*------------------------------- vertical carousel indicators ------------------------------*/
.carousel-indicators{
position:absolute;
top:0;
bottom:0;
margin:auto;
height:20px;
right:10px; left:auto;
width:auto;
}
.carousel-indicators li{display:block; margin-bottom:5px; border:1px solid #00a199; }
.carousel-indicators li.active{margin-bottom:5px; background:#00a199;}
JavaScript
$(document).ready(function(){
// invoke the carousel
$('#myCarousel').carousel({
interval: false
});
// scroll slides on mouse scroll
$('#myCarousel').bind('mousewheel DOMMouseScroll', function(e){
if(e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) {
$(this).carousel('prev');
}
else{
$(this).carousel('next');
}
});
//scroll slides on swipe for touch enabled devices
$("#myCarousel").on("touchstart", function(event){
var yClick = event.originalEvent.touches[0].pageY;
$(this).one("touchmove", function(event){
var yMove = event.originalEvent.touches[0].pageY;
if( Math.floor(yClick - yMove) > 1 ){
$(".carousel").carousel('next');
}
else if( Math.floor(yClick - yMove) < -1 ){
$(".carousel").carousel('prev');
}
});
$(".carousel").on("touchend", function(){
$(this).off("touchmove");
});
});
});