Novakim
Novakim

Reputation: 47

Trying to stop bootstrap carousel from pausing on hover

I have a bootstrap carousel with a progress bar that fill up and triggers the next slide. My problem is that right now the carousel pauses when i hover the mouse over the slides and i want it to not pause and keep going.

Here is my code:

$(document).ready(function(){
    var percent = 0,
    interval =35//it takes about 6s, interval=20 takes about 4s
    $bar = $('#progress-bar'),
    $crsl = $('#carousel-hero');
    $('.carousel-indicators li, .carousel-control').click(function (){$bar.css({width:0.5+'%'});});
    /*line above just for showing when controls are clicked the bar goes to 0.5% to make more friendly, 
    if you want when clicked set bar empty, change on width:0.5 to width:0*/
    $crsl.carousel({//initialize
        interval: false,
        pause: false
    }).on('slide.bs.carousel', function (){percent = 0;});//This event fires immediately when the bootstrap slide instance method is invoked.
    function progressBarCarousel() {
        $bar.css({width:percent+'%'});
        percent = percent +0.5;
        if (percent>=100) {
            percent=0;
            $crsl.carousel('next');
        }
    }
    var barInterval = setInterval(progressBarCarousel, interval);//set interval to progressBarCarousel function
    if (!(/Mobi/.test(navigator.userAgent))) {//tests if it isn't mobile
        $crsl.hover(function(){
                    clearInterval(barInterval);
                },
                function(){
                    barInterval = setInterval(progressBarCarousel, interval);
                }
        );
    }
});

And my HTML :

 <div id="carousel-hero" class="carousel slide" data-ride="carousel"><!-- Main Slider -->
              <ol class="carousel-indicators">
                <li data-target="#carousel-hero" data-slide-to="0" class="active"></li>
                <li data-target="#carousel-hero" data-slide-to="1"></li>
                <li data-target="#carousel-hero" data-slide-to="2"></li>
              </ol>
            <div class="carousel-inner">
                <div class="item active"><!-- First Slide -->
                    <div class="overlay"></div>
                    <img src="images/hero1.jpg" alt="hero-image" class="img-responsive">
                    <div class="carousel-caption"><!-- Tagline -->
                        <h1 class="tagline">WE ARE <span class="colored">NIXO</span> CREATIVE</h1>
                        <h5>Branding | Design | Developement</h5>
                    </div>
                </div>          
                <div class="item"><!-- Second Slide -->
                    <div class="overlay"></div>
                    <img src="images/hero2.jpg" alt="hero-image" class="img-responsive">
                    <div class="carousel-caption"><!-- Tagline -->
                        <h1 class="tagline">WE <span class="colored">ALWAYS</span> DELIVER</h1>
                        <h5>UX | Marketing | Ideas</h5>
                    </div>
                </div>
                <div class="item"><!-- Third Slide -->
                    <div class="overlay"></div>
                    <img src="images/hero3.jpg" alt="hero-image" class="img-responsive">
                    <div class="carousel-caption"><!-- Tagline -->
                        <h1 class="tagline">WE <span class="colored">LOVE</span> DESIGN</h1>
                        <h5>Beautiful | Clean | Inspiring</h5>
                    </div>
                </div>
                <!-- Carousel Controlls -->
               <a id="hero-control-left" class="control-hero control-left" href="#carousel-hero" role="button" data-slide="prev">
                   <span class="pe-7s-angle-left pe-4x" aria-hidden="true"></span>
                   <span class="sr-only">Previous</span>
                </a>
                <a id="hero-control-right" class="control-hero control-right" href="#carousel-hero" role="button" data-slide="next">
                    <span class="pe-7s-angle-right pe-4x" aria-hidden="true"></span>
                    <span class="sr-only">Next</span>
                </a>
            </div>
            <div id="progress-bar"></div> <!-- Carousel Progress Bar -->
  </div>

THINGS I'VE TRIED:

Any help is apreciated.

Upvotes: 1

Views: 4897

Answers (2)

Aileen S
Aileen S

Reputation: 1

I had the same problem. Just solved it by changing the bootstrap js file (in my case bootstrap.bundle.min.js)

ctrl+f=pause to make it easy to find, it was pause:"hover" and I change it for:

pause:"false"

hope this helps.

Upvotes: 0

Deep
Deep

Reputation: 9794

Set Pause to null and data-pause="false"

$crsl.carousel({//initialize
        interval: false,
        pause: null
 })

<div id="carousel-hero" class="carousel slide" data-ride="carousel" data-pause="null">

Read more about the carousel options here

https://v4-alpha.getbootstrap.com/components/carousel/#options

For avoiding the progress bar stop remove the code for crsl.hover which clears interval for the progress bar and restart it on blur.

Working Example : https://jsfiddle.net/ne9x9Lp1/

Upvotes: 2

Related Questions