javascript - Flex 容器图像 slider 轮播

标签 javascript jquery css flexbox

我正在尝试使用 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; }
}
});

这是我得到的 fiddle :

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

最佳答案

你差不多好了,你只需要在每次迭代中增加翻译,因为实际上你总是在改变相同的值。你需要做这样的事情:

'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>

关于javascript - Flex 容器图像 slider 轮播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47768822/

相关文章:

html - 如何防止行内列表换行

javascript - 使用带有原始 javascript 的 offsetWidth 属性设置元素的宽度

javascript - Google API - 未找到文件 ID - 但返回的数据对应于我输入的folderId

Javascript - 获取页面标题和元描述并将它们用作 chrome 扩展的变量

javascript - 如何观看两个事件并在它们之后做些什么?

html - 如何将段落文本与中间的图像对齐

javascript - 光标离开 Canvas 后,如何使用 MouseLeave 将光标改回原来的状态?

javascript - jQuery:如果距顶部超过 150px 则执行

javascript - 在加载整个 html 页面之前如何显示加载 gif

javascript - AJAX 响应后提交表单时出现VerifyCsrfToken 异常