Bootstrap carousel move single item in one click

后端 未结 2 2026
攒了一身酷
攒了一身酷 2020-12-21 16:45

I have this carousel



        
相关标签:
2条回答
  • 2020-12-21 17:07

    For some reason snippet is not showing the exact result. Please check the fiddle

    FIDDLE (clean and working version)

    $('#myCarousel').carousel({
      interval: 10000
    })
    
    $('.carousel .item').each(function(){
      var next = $(this).next();
      if (!next.length) {
        next = $(this).siblings(':first');
      }
      next.children(':first-child').clone().appendTo($(this));
      
      if (next.next().length>0) {
        next.next().children(':first-child').clone().appendTo($(this));
      }
      else {
      	$(this).siblings(':first').children(':first-child').clone().appendTo($(this));
      }
    });
    #myCarousel .carousel-inner .active.left {
      left: -33%;
    }
    #myCarousel .carousel-inner .active.right {
      left: 33%;
    }
    #myCarousel .carousel-inner .next {
      left: 33%;
    }
    #myCarousel .carousel-inner .prev {
      left: -33%;
    }
    #myCarousel .carousel-control.left {
      background-image: none;
    }
    #myCarousel .carousel-control.right {
      background-image: none;
    }
    #myCarousel .carousel-inner .item {
      background: white;
      transition: all ease .5s;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <div id="myCarousel" class="carousel slide">
    
      <div class="carousel-inner">
        <div class="item active">
          <div class="col-xs-4">
            <a href="#">
              <img src="http://placehold.it/500/bbbbbb/fff&amp;text=1" class="img-responsive">
            </a>
          </div>
        </div>
        <div class="item">
          <div class="col-xs-4">
            <a href="#">
              <img src="http://placehold.it/500/CCCCCC&amp;text=2" class="img-responsive">
            </a>
          </div>
        </div>
        <div class="item">
          <div class="col-xs-4">
            <a href="#">
              <img src="http://placehold.it/500/eeeeee&amp;text=3" class="img-responsive">
            </a>
          </div>
        </div>
        <div class="item">
          <div class="col-xs-4">
            <a href="#">
              <img src="http://placehold.it/500/f4f4f4&amp;text=4" class="img-responsive">
            </a>
          </div>
        </div>
        <div class="item">
          <div class="col-xs-4">
            <a href="#">
              <img src="http://placehold.it/500/fcfcfc/333&amp;text=5" class="img-responsive">
            </a>
          </div>
        </div>
        <div class="item">
          <div class="col-xs-4">
            <a href="#">
              <img src="http://placehold.it/500/f477f4/fff&amp;text=6" class="img-responsive">
            </a>
          </div>
        </div>
      </div>
    
      <!-- Controls -->
      <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
        <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
        <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
      </a>
    </div>

    0 讨论(0)
  • 2020-12-21 17:23

    Working Fiddle

    I was having the same problem, and I got it to only slide by one item at a time by adding this code to the css:

    #myCarousel .carousel-inner .item {
      background: white;
      /*transition: transform;*/
      transition: all 500ms ease-out; /* transition is added here */
    }
    

    Try this: JS:

    $('#myCarousel').carousel({
      interval: 4000
    })
    
    $('.carousel .item').each(function(){
      var next = $(this).next();
      if (!next.length) {
        next = $(this).siblings(':first');
      }
      next.children(':first-child').clone().appendTo($(this));
    
      for (var i=0;i<2;i++) {
        next=next.next();
        if (!next.length) {
          next = $(this).siblings(':first');
        }
    
        next.children(':first-child').clone().appendTo($(this));
      }
    });
    

    CSS:

    .carousel-inner .active.left { left: -25%; }
    .carousel-inner .next        { left:  25%; }
    .carousel-inner .prev        { left: -25%; }
    .carousel-control            { width:  4%; }
    .carousel-control.left,.carousel-control.right {margin-left:15px;background-image:none;}
    
    #myCarousel .carousel-inner .item {
      background: white;
      /*transition: transform;*/
      transition: all 500ms ease-out; /* transition is added here */
    }
    

    HTML:

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <title></title>
        <link rel="stylesheet" href="bootstrapCarousel.css">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
        <!-- <script type="text/javascript" src="http://twitter.github.io/bootstrap/assets/js/bootstrap-transition.js"></script>
        <script type="text/javascript" src="http://twitter.github.io/bootstrap/assets/js/bootstrap-carousel.js"></script> -->
      </head>
      <body>
      <div class="col-md-12 text-center"><h3>Product Carousel</h3></div>
    
    <div class="col-md-6 col-md-offset-3">
    <div class="carousel slide row" data-ride="carousel" data-type="multi" data-interval="3000" id="myCarousel">
      <div class="carousel-inner">
        <div class="item active">
          <div class="col-md-3 col-sm-6 col-xs-12"><a href="#"><img src="http://placehold.it/500/e499e4/fff&amp;text=1" class="img-responsive" /></a></div>
        </div>
        <div class="item">
          <div class="col-md-3 col-sm-6 col-xs-12"><a href="#"><img src="http://placehold.it/500/e477e4/fff&amp;text=2" class="img-responsive" /></a></div>
        </div>
        <div class="item">
          <div class="col-md-3 col-sm-6 col-xs-12"><a href="#"><img src="http://placehold.it/500/eeeeee&amp;text=3" class="img-responsive" /></a></div>
        </div>
        <div class="item">
          <div class="col-md-3 col-sm-6 col-xs-12"><a href="#"><img src="http://placehold.it/500/f4f4f4&amp;text=4" class="img-responsive" /></a></div>
        </div>
        <div class="item">
          <div class="col-md-3 col-sm-6 col-xs-12"><a href="#"><img src="http://placehold.it/500/f566f5/333&amp;text=5" class="img-responsive" /></a></div>
        </div>
        <div class="item">
          <div class="col-md-3 col-sm-6 col-xs-12"><a href="#"><img src="http://placehold.it/500/f477f4/fff&amp;text=6" class="img-responsive" /></a></div>
        </div>
        <div class="item">
          <div class="col-md-3 col-sm-6 col-xs-12"><a href="#"><img src="http://placehold.it/500/eeeeee&amp;text=7" class="img-responsive" /></a></div>
        </div>
        <div class="item">
          <div class="col-md-3 col-sm-6 col-xs-12"><a href="#"><img src="http://placehold.it/500/fcfcfc/333&amp;text=8" class="img-responsive" /></a></div>
        </div>
      </div>
      <a class="left carousel-control" href="#myCarousel" data-slide="prev"><i class="glyphicon glyphicon-chevron-left"></i></a>
      <a class="right carousel-control" href="#myCarousel" data-slide="next"><i class="glyphicon glyphicon-chevron-right"></i></a>
    </div>
    </div>
    
    <script src="https://code.jquery.com/jquery-2.0.2.min.js" type="text/javascript"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <script type="text/javascript" src="bootstrapCarousel.js">
    </script>
    </body>
    </html>
    

    You can also make the transition smoother by adding transition: all 500ms ease-out; to your css.

    Fiddle here: http://jsfiddle.net/eaae76kx/98/

    0 讨论(0)
提交回复
热议问题