2017-09-25 19 views
6

Tôi có băng chuyền nhấp nháy và tôi muốn bật autoPlay. Khi băng chuyền đang tự động phát, tôi muốn nhóm các ô qua groupCells: true. Càng xa càng tốt. Khi người dùng nhấp vào các nút trước đó hoặc tiếp theo, tôi muốn thanh trượt chỉ di chuyển 1 ô, vì vậy khi người dùng nhấp vào, groupCells phải là false.Hoạt động của tế bào nhóm - sự rung động

My Options:

pageDots: false, 
imagesLoaded: true, 
autoPlay: true, 
pauseAutoPlayOnHover: false, 
wrapAround: true, 
groupCells: true, 
selectedAttraction: 0.01 
+0

Tạo một ví dụ làm việc về những gì bạn có cho đến nay và giải thích chính xác vấn đề là gì. Điều này sẽ giúp người dùng khác hiểu rõ hơn về vấn đề và bạn có thể sẽ nhận được nhiều sự chú ý hơn cho câu hỏi này và có thể có câu trả lời. – Dekel

+0

Trong [this] (https://codepen.io/anon/pen/pWrVKQ) ví dụ các ô được nhóm lại, tự động phát được đặt trên 6s. Tất cả đều tốt. Tôi muốn rằng nếu tôi nhấp vào một trong các mũi tên điều hướng, nó sẽ chỉ vuốt sang trái hoặc phải chỉ 1 ô chứ không phải tất cả ba nhóm. – balintpekker

Trả lời

3

Đây là giải pháp của tôi, đó là một chút hacky nhưng dường như làm việc, có thể được kiểm tra ở đây: https://codepen.io/anon/pen/QqajpX

<div class="carousel"> 
    <div class="carousel-cell"></div> 
    <div class="carousel-cell"></div> 
    <div class="carousel-cell"></div> 
    <div class="carousel-cell"></div> 
    <div class="carousel-cell"></div> 
    <div class="carousel-cell"></div> 
    <div class="carousel-cell"></div> 
    <div class="carousel-cell"></div> 
    <div class="carousel-cell"></div> 
    <div class="carousel-cell"></div> 
    <div class="carousel-cell"></div> 
</div> 
<script> 
    var carousel = $('.carousel').flickity({ 
     groupCells: true, 
     autoPlay: true 
    }).on('dragEnd.flickity', function(event, pointer) { 
     exitGroupCells(); 
    }).on('staticClick.flickity', function(event, pointer, cellElement, cellIndex) { 
     restartCarousel(cellIndex); 
    }); 

    var flkty = carousel.data('flickity'); 

    flkty.prevButton.on('tap', function() { 
     exitGroupCells(true); 
    }); 

    flkty.nextButton.on('tap', function() { 
     exitGroupCells(); 
    }); 

    function exitGroupCells(prev=false) {    
     if (!flkty.options.autoPlay && !flkty.options.groupCells) { 
      return; 
     } 

     var nextCellIndex = 0; 

     if (prev === true) { 
      for (var i=0; i <= flkty.selectedIndex; i++) { 
       nextCellIndex += flkty.slides[i].cells.length; 
      } 
      nextCellIndex -= 1; 
     } else { 
      var nextCell = flkty.slides[flkty.selectedIndex].cells[0]; 

      for(var i=0; i < flkty.cells.length; i++) { 
       if (nextCell === flkty.cells[i]) { 
        nextCellIndex = i; 
        break; 
       } 
      } 
     } 

     restartCarousel(nextCellIndex); 
    } 

    function restartCarousel(nextCellIndex) { 
     $('.carousel').flickity('destroy') 

     $('.carousel').flickity({ 
      groupCells: false, 
      autoPlay: false, 
      initialIndex: nextCellIndex 
     }); 
    } 
</script> 
+0

Nó không phải là xấu, nhưng lúc đầu các tế bào 1-2-3 được nhóm lại, và nếu tôi nhấp vào điều hướng để vuốt sang phải, nó sẽ chuyển sang ô 2. Tôi muốn nó để swipe các tế bào đầu tiên sau khi các tế bào được nhóm, trong trường hợp này 4. Nếu autoplay là trên và đã được swiped như 2 lần, và các tế bào được nhóm là 7-8-9, nếu tôi vuốt sang phải, tôi muốn nó để swipe đến 10. – balintpekker

+0

@balintpekker Tôi vừa cập nhật câu trả lời để sửa lỗi mà tôi tìm thấy khi quay lại nhóm thứ ba. Nên ổn thôi. – Isma

Các vấn đề liên quan