javascript - The swiper slider loop doesn't work properly when there are fewer slides than the double-value - Stack Over

If i use **6 slides **and slidesPerView: 3, its working fine but If 5 slides and slidesPerView: 3 then

If i use **6 slides **and slidesPerView: 3, its working fine but If 5 slides and slidesPerView: 3 then its not looping its stop after last slide

        var swiper = new Swiper('.swiper-container', {
        direction: 'vertical',
        slidesPerView: 3,
        spaceBetween: 30,
        mousewheel: true,
      grabCursor: true,
        loop: true,
        autoplay: {
          delay: 500,
          disableOnInteraction: false,
        }
    });
    html, body {
      position: relative;
      height: 100%;
    }
    body {
      background: #eee;
      font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
      font-size: 14px;
      color:#000;
      margin: 0;
      padding: 0;
    }
    .swiper-container {
      width: 100%;
      height: 100%;
    }
    .swiper-slide {
      text-align: center;
      font-size: 18px;
      background: #fff;

      /* Center slide text vertically */
      display: -webkit-box;
      display: -ms-flexbox;
      display: -webkit-flex;
      display: flex;
      -webkit-box-pack: center;
      -ms-flex-pack: center;
      -webkit-justify-content: center;
      justify-content: center;
      -webkit-box-align: center;
      -ms-flex-align: center;
      -webkit-align-items: center;
      align-items: center;
    }
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href=".min.css">
    <script src=".min.js"></script>
    <title></title>
</head>
<body>

        <!-- Swiper -->
    <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide">Slide 1</div>
            <div class="swiper-slide">Slide 2</div>
            <div class="swiper-slide">Slide 3</div>
            <div class="swiper-slide">Slide 4</div>
            <div class="swiper-slide">Slide 5</div>
        </div>
    </div>


</body>
</html>

If i use **6 slides **and slidesPerView: 3, its working fine but If 5 slides and slidesPerView: 3 then its not looping its stop after last slide

        var swiper = new Swiper('.swiper-container', {
        direction: 'vertical',
        slidesPerView: 3,
        spaceBetween: 30,
        mousewheel: true,
      grabCursor: true,
        loop: true,
        autoplay: {
          delay: 500,
          disableOnInteraction: false,
        }
    });
    html, body {
      position: relative;
      height: 100%;
    }
    body {
      background: #eee;
      font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
      font-size: 14px;
      color:#000;
      margin: 0;
      padding: 0;
    }
    .swiper-container {
      width: 100%;
      height: 100%;
    }
    .swiper-slide {
      text-align: center;
      font-size: 18px;
      background: #fff;

      /* Center slide text vertically */
      display: -webkit-box;
      display: -ms-flexbox;
      display: -webkit-flex;
      display: flex;
      -webkit-box-pack: center;
      -ms-flex-pack: center;
      -webkit-justify-content: center;
      justify-content: center;
      -webkit-box-align: center;
      -ms-flex-align: center;
      -webkit-align-items: center;
      align-items: center;
    }
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="https://unpkg./swiper/swiper-bundle.min.css">
    <script src="https://unpkg./swiper/swiper-bundle.min.js"></script>
    <title></title>
</head>
<body>

        <!-- Swiper -->
    <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide">Slide 1</div>
            <div class="swiper-slide">Slide 2</div>
            <div class="swiper-slide">Slide 3</div>
            <div class="swiper-slide">Slide 4</div>
            <div class="swiper-slide">Slide 5</div>
        </div>
    </div>


</body>
</html>

Share Improve this question asked Oct 13, 2023 at 13:22 AmanAman 1,5501 gold badge10 silver badges16 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 3

The documentation clearly states: Due to the way loop mode works (it will rearrange the slides), the total number of slides must be >= slidesPerView * 2.
So you have to set the required number of slides, which is very annoying...
But you can use an older version of swiper https://unpkg./[email protected]/swiper-bundle.min.js where the loop mechanism works differently.

In Swiper version >=9.4.1 (behaves differently in older versions) you need to set both loop and cssMode properties to true.

https://unpkg./[email protected]/swiper-bundle.min.js

...
loop:true,
cssMode:true,
...

More info: https://swiperjs./swiper-api#param-loop

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744330819a4568877.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信