Bootstrap 3.0 Carousel with Custom Pause and Play

Custom pause/play button added to this carousel.

by Rynne Cowham

HTML

<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css">
<!-- Carousel -->
<div id="thisCarousel" class="carousel slide">
  <!-- Menu -->
  <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>
  </ol>
    
  <!-- Items -->
  <div class="carousel-inner">
      
      <!-- Item 1 -->
    <div class="item active">
        <img src="http://lorempixel.com/1500/600/abstract/1"/>
      <div class="container">
        <div class="carousel-caption">
          <h1>Bootstrap 3 Carousel Layout</h1>
          <p>This is an example layout with carousel that uses the Bootstrap 3 styles.</p>
          <p><a class="btn btn-md btn-primary" href="http://getbootstrap.com">Learn More</a>
        </p></div>
      </div>
    </div>
      
      <!-- Item 2 -->
    <div class="item">
        <img src="http://lorempixel.com/1500/600/abstract/2"/>
      <div class="container">
        <div class="carousel-caption">
          <h1>Changes to the Grid</h1>
          <p>Bootstrap 3 still features a 12-column grid, but many of the CSS class names have completely changed.</p>
          <p><a class="btn btn-md btn-primary" href="#">Learn more</a></p>
        </div>
      </div>
    </div>
      
      <!-- Item 3 -->
    <div class="item">
        <img src="http://lorempixel.com/1500/600/abstract/3" />
      <div class="container">
        <div class="carousel-caption">
          <h1>Percentage-based sizing</h1>
          <p>With "mobile-first" there is now only one percentage-based grid.</p>
          <p><a class="btn btn-md btn-primary" href="#">Browse gallery</a></p>
        </div>
      </div>
   ...

CSS

.carousel-indicators {
    display:none;
}
#playPauseBtn {
    margin: 0 auto;
    position: absolute;
    bottom:5px;
    left:50%; margin-left:-19px;
    text-align: center;
    z-index: 25;    
}
.btn.btn-ghost { 
    background:transparent !important; 
    color:#f47920;
    border-radius: 5px;
    border:1px solid #ccc;
}
#playPauseBtn .fa-pause { display:inline; }
#playPauseBtn .fa-play { display:none; }

JavaScript

$(function() {
  $('#thisCarousel').carousel({
    interval: 2000,
    pause: "false"
  });

  $('#playPauseBtn').click(function () {
    var $el = $(this);
    var isPlaying = $el.hasClass('isPlaying');
    var isPaused = $el.hasClass('isPaused');

    if (isPaused) {
      // we know it's paused, so play it
      $('#thisCarousel').carousel('cycle');
      $el.removeClass('isPaused');
      $el.addClass('isPlaying');
        $('.fa-play').hide();
        $('.fa-pause').show();
    } else if (isPlaying) {
      // we know it's playing, so pause it
      $('#thisCarousel').carousel('pause');
      $el.removeClass('isPlaying');
      $el.addClass('isPaused');
        $('.fa-pause').hide();
        $('.fa-play').show();
    }
  });
});