Swiper JS:如何在某个断点处初始化滑块

问题描述 投票:0回答:1

大家!

我需要在桌面屏幕上显示 3 张幻灯片,并在移动屏幕上显示 1 张带有初始化滑动和分页的幻灯片。 我想得到建议。 我无法理解如何仅在某些断点处初始化滑动器 - 移动屏幕

我在对象 Swiper 中添加 key-value: init:false 并使用 init:true 设置断点,但仍然无法正常工作

HTML:

<!DOCTYPE html>
<html>
  <head>
    <title>Parcel Sandbox</title>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link rel="stylesheet" href="./index.css" />
    <link
      rel="stylesheet"
      href="https://cdn.jsdelivr.net/npm/swiper@10/swiper-bundle.min.css"
    />
  </head>
  <body>
    <div class="tabs__body swiper-container">
      <ul class="tabs__content swiper-wrapper">
        <li class="tabs__bike-block swiper-slide">
          <a href="#" class="tabs__link">
            <img
              src="https://ir.ozone.ru/s3/cms/84/t6c/wc500/336x336_mountain.jpg"
              alt=""
              class="tabs__bike-img"
            />
          </a>
        </li>
        <li class="tabs__bike-block swiper-slide">
          <a href="#" class="tabs__link">
            <img
              src="https://ir.ozone.ru/s3/cms/1d/t32/wc500/336x336_highway.jpg"
              alt=""
              class="tabs__bike-img"
            />
          </a>
        </li>
        <li class="tabs__bike-block swiper-slide">
          <a href="#" class="tabs__link">
            <img
              src="https://ir.ozone.ru/s3/cms/db/tb1/wc500/336x336_city.jpg"
              alt=""
              class="tabs__bike-img"
            />
          </a>
        </li>
      </ul>
      <div class="tabs__pagination swiper-pagination"></div>
    </div>
    <script type="module">
      import Swiper from "https://cdn.jsdelivr.net/npm/swiper@10/swiper-bundle.min.mjs";

      const bikeSlider = new Swiper(".tabs__body", {
        init: false,
        breakpoints: {
          // when window width is >= 320px
          320: {
            init: true,
            pagination: {
              el: ".swiper-pagination",
              clickable: true,
            },

            slidesPerView: 1,

            slidesPerGroup: 1,

            initialSlide: 0,

            loop: true,

            loopedSlides: 1,
          },
          760: {
            init: false,
          }
        },
        effect: "creative",

        creativeEffect: {
          prev: {
            opacity: 1,
          },
          next: {
            opacity: 1,
          },
        },
        allowTouchMove: false,
      });
    </script>
  </body>
</html>

CSS:

body {
  font-family: sans-serif;
  max-width: 1200px;
  width: 100%;
  box-sizing: border-box;
  margin: 0 auto;
  overflow-x: hidden;
  height: 100vh;
  display: flex;
  background-color: #333;
}

.tabs__body {
  display: flex;
  flex-wrap: wrap;
  margin: 0 auto;
  align-items: center;
}

.tabs__content {
  list-style-type: none;
  display: flex;
  gap: 16px;
  max-height: 180px;
  max-width: 100%;
  width: 100%;
  height: 100%;
  margin: 0 auto;
  box-sizing: border-box;
  justify-content: center;
}

.tabs__bike-block {
  max-width: 280px;
}

.tabs__bike-img {
  max-width: 380px;
  max-height: 180px;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 10;
}

.tabs__pagination {
    display: none;
}


@media screen and (max-width: 760px) {
    .tabs__pagination {
        display: block;
    }

    .tabs__content {
        max-width: 280px;
    }
}
javascript layout frontend swiper.js
1个回答
0
投票

尝试从主 Swiper 初始化中删除 init: false 并显式设置桌面断点(320px)的初始化 https://stackforgeeks.com/blog/swiper-js-how-init-slider-at-a-certain-breakpoint

© www.soinside.com 2019 - 2024. All rights reserved.