Carousel with prog

by kayenglajom

HTML

<div class="container py-3">
    <h3>Carousel with Progress Bar</h3>
    <div class="progress my-2">
        <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="1" aria-valuemin="1" aria-valuemax="5" style="width: 20%;">
            Step 1
        </div>
    </div>
    <div id="myCarousel" class="carousel slide" data-ride="carousel">
        <div class="carousel-buttons d-flex">
            <div class="flex-grow-1"><a class="btn btn-primary btn-block rounded-0" data-target="#myCarousel" data-slide-to="0" href="#">One</a></div>
            <div class="flex-grow-1"><a class="btn btn-primary btn-block rounded-0" data-target="#myCarousel" data-slide-to="1" href="#">Two</a></div>
            <div class="flex-grow-1"><a class="btn btn-primary btn-block rounded-0" data-target="#myCarousel" data-slide-to="2" href="#">Three</a></div>
            <div class="flex-grow-1"><a class="btn btn-primary btn-block rounded-0" data-target="#myCarousel" data-slide-to="3" href="#">Four</a></div>
        </div>
        <ol class="carousel-indicators">
            <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
            <li data-target="#myCarousel" data-slide-to="1"></li>
            <li data-target="#myCarousel" data-slide-to="2"></li>
            <li data-target="#myCarousel" data-slide-to="3"></li>
        </ol>
        <div class="carousel-inner">
            <div class="carousel-item active" data-step="1">
                <img src="http://placehold.it/1100x400/333?text=1">
                <div class="container">
                    <div class="carousel-caption">
                    </div>
                </div>
            </div>
            <div class="carousel-item" data-step="2">
                <img src="http://placehold.it/1100x400/888?text=2">
                <div class="container">
                    <div class="carousel-caption">

                    </div>
                </div>
            </div>
            <div...

CSS

/* CUSTOMIZE THE CAROUSEL
-------------------------------------------------- */

/* Since positioning the image, we need to help out the caption */
.carousel-caption {
  z-index: 10;
}

/* Declare heights because of positioning of img element */
.carousel .carousel-item {
  height: 400px;
  background-color:#bbb;
}
.carousel img {
  position: absolute;
  top: 0;
  left: 0;
  min-width: 100%;
}

JavaScript

var totalSteps = 4;

$('#myCarousel').carousel();
$('#myCarousel').on('slide.bs.carousel', function (e) {
  
  //update progress
  var step = $(e.relatedTarget).data('step');
  var percent = (parseInt(step) / totalSteps) * 100;
  
  $('.progress-bar').css({width: percent + '%'});
  $('.progress-bar').text("Step " + step);
  
})