【问题标题】:Flex container image slider carouselFlex 容器图像滑块轮播
【发布时间】:2017-12-12 21:34:20
【问题描述】:

我正在尝试使用 flex 容器制作图像轮播。 我希望轮播在特定时间过去时滑动图像。第一次迭代没问题,但当第二次迭代到来时,它什么也不做。

我不想使用第三方轮播。谢谢你的回答

$(document).ready( function() {

var carouselWidth = $('.rm-carousel-item').width();

var carIndex = 0;
var playCarousel = setInterval(function(){ autoPlayCarousel(carIndex) }, 3000);

function autoPlayCarousel(index){
    var items = $('.racmma-carousel').children();

    for (var i = 0; i < items.length; i++){
        console.log(i);
        var item = items.get(i);
        $(item).css({'transform' : 'translate(' + -carouselWidth +'px, ' + 0 + 'px)'});
    }
    carIndex += 1;
    //if ( carIndex > items.length) { carIndex = 0; }
}
});

这是我得到的小提琴:

https://jsfiddle.net/j565rdk8/3/

【问题讨论】:

    标签: javascript jquery css flexbox


    【解决方案1】:

    您几乎很好,您只需要在每次迭代中增加翻译,因为实际上您总是在更改相同的值。你需要做这样的事情:

    'transform': 'translate(' + -(index * carouselWidth) + 'px, ' + 0 + 'px)'
    

    随着索引的增加,每次迭代的平移都会变大:

    $(document).ready(function() {
    
      var carouselWidth = $('.rm-carousel-item').width();
    
      var carIndex = 0;
      var playCarousel = setInterval(function() {
        autoPlayCarousel(carIndex)
      }, 1000);
    
      function autoPlayCarousel(index) {
        var items = $('.racmma-carousel').children();
    
        for (var i = 0; i < items.length; i++) {
          var item = items.get(i);
          $(item).css({
            'transform': 'translate(' + -(index * carouselWidth) + 'px, ' + 0 + 'px)'
          });
        }
        carIndex += 1;
        if (carIndex == items.length) {
          carIndex = 0;
        }
      }
    });
    .racmma-carousel {
      height: 100%;
      max-width: 10000%;
      display: -moz-flex;
      display: -webkit-flex;
      display: flex;
      flex-flow: row;
      justify-content: space-between;
      overflow: hidden;
    }
    
    .rm-carousel-item {
      flex-shrink: 0;
      width: 100%;
      height: 100%;
      background-position: center;
      background-size: cover;
      background-repeat: no-repeat;
      transition: 0.6s all ease-in-out;
      min-height: 200px;
    }
    
    #carousel-item-1 {
      background-image: url(/bd/media/hero.jpg);
      background-color: blue;
    }
    
    #carousel-item-2 {
      background-image: url(/bd/media/hero2.jpg);
      background-color: red;
    }
    
    #carousel-item-3 {
      background-image: url(/bd/media/hero3.jpg);
      background-color: green;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="racmma-carousel">
      <div class="rm-carousel-item" id="carousel-item-1">
    
      </div>
      <div class="rm-carousel-item" id="carousel-item-2">
    
      </div>
      <div class="rm-carousel-item" id="carousel-item-3">
    
      </div>
    </div>

    【讨论】:

    • 老兄谢谢!!我也在做同样的事情,但是使用“i”所以它不起作用..我没想过使用索引!
    • 这有点离题了,但是,如何才能让第一个持续到最后等等,这样就不会发生“回滚”
    • @Rialcom 让我们看看这个 ;)
    • @Rialcom 不幸的是,使用实际代码并不容易,您想要另一种方法吗?
    • @TemaniAfif 是的,任何帮助解决它都会非常好!感谢您的宝贵时间!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2018-01-22
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    相关资源
    最近更新 更多