Swiper 自动初始化封装 API 文档

基于 Swiper 8.4.7,通过给容器添加 data-swiper 属性自动初始化轮播组件,支持多种配置。

支持的 data- 配置属性列表

属性名 类型 默认值 说明 示例
data-Swiper-Open boolean all 对于3端是否选择开启可单写 pc, ipad, mo (没写就是默认3端开启) data-Swiper-Open="pc, ipad, mo"
data-loop boolean true 是否开启循环模式(无缝滚动) data-loop="true"
data-autoplay number (毫秒) | false false 自动播放间隔,单位毫秒。设置为0或不设置则关闭自动播放 data-autoplay="3000"
data-speed number 300 切换动画速度,单位毫秒 data-speed="500"
data-space-between number 20,15,10 slide 之间间距,单位px 格式为 "pc, ipad, mo" data-space-between="20,15,10"
data-centered-slides boolean false 是否启用居中模式(是否选择开启可单写 pc, ipad, mo) data-centered-slides="true"
data-pagination string | false bullets 分页器类型,支持 bullets, fraction, progressbar, 设置 false 关闭分页 data-pagination="bullets"
data-free-mode boolean false 是否开启自由滑动模式,无吸附效果 data-free-mode="true"
data-navigation boolean false 是否显示左右切换按钮 data-navigation="true"
data-slides-per-view number | auto 4 每页显示多少个 slide,支持数字或 auto data-slides-per-view="auto"
data-slides-per-group number 1 每次切换 slide 数量 data-slides-per-group="1"
data-breakpoints string (格式: "4,2,1") 4,2,1 响应式断点配置,格式为 "pc, ipad, mo" data-breakpoints="4,2,1"
data-direction string horizontal 滑动方向,horizontalvertical data-direction="vertical"
data-effect string slide 切换效果,支持 slide, fade, cube, coverflow, flip data-effect="fade"
data-free-mode boolean false 是否开启自由滑动模式(无吸附) data-free-mode="true"
data-looped-slides number undefined loop 模式下的复制幻灯片数量 data-looped-slides="3"
data-touch-ratio number 1 触摸滑动灵敏度比例 data-touch-ratio="0.5"
data-thumbs 需手动初始化主轮播,示例中自动初始化了缩略图 false 关联缩略图 Swiper 选择器 #thumbs-container

使用示例

1. 基本用法

只需给容器添加 data-swiper 属性,其他可选配置可直接添加 data-* 属性:

<div data-swiper data-autoplay="3000" data-space-between="20" data-navigation="true" data-pagination="bullets" data-breakpoints="4,2,1">
  <div> data-swiper(初始化) </div>
  <div> data-autoplay(自动播放间隔,单位毫秒) </div>
  <div> data-space-between(slide 之间间距,单位 px) </div>
  <div> data-navigation(是否显示左右切换按钮) </div>
  <div> data-pagination(分页器类型:例如 。。。切换) </div>
  <div> data-breakpoints(响应式断点配置,格式为 "PC, iPad, 手机" 数字) </div>
</div>

2. 启用自动播放

<div data-swiper data-autoplay="2500">
  <div>Slide 1</div>
  <div>Slide 2</div>
  <div>Slide 3</div>
</div>

3. 启用缩略图同步

通过添加 data-thumb-for="#mainSwiperId" 属性,实现主轮播和缩略图同步(需手动初始化主轮播,示例中自动初始化了缩略图)

<!-- 主轮播 -->
<div id="mainSwiper" data-swiper data-slides-per-view="1" data-loop="true" data-pagination="bullets" data-navigation="true">
  <div>主幻灯片 1</div>
  <div>主幻灯片 2</div>
  <div>主幻灯片 3</div>
</div>

<!-- 缩略图 -->
<div data-swiper data-slides-per-view="4" data-loop="true" data-free-mode="true" data-watch-slides-progress="true" data-thumb-for="#mainSwiper">
  <div>缩略图 1</div>
  <div>缩略图 2</div>
  <div>缩略图 3</div>
  <div>缩略图 4</div>
</div>

<script>
  const mainSwiper = new Swiper('#mainSwiper', {
    loop: true,
    navigation: {
      nextEl: '#mainSwiper .swiper-button-next',
      prevEl: '#mainSwiper .swiper-button-prev',
    },
    pagination: {
      el: '#mainSwiper .swiper-pagination',
      clickable: true,
    },
  });

  const thumbSwiper = new Swiper('[data-thumb-for="#mainSwiper"]', {
    slidesPerView: 4,
    freeMode: true,
    watchSlidesProgress: true,
    loop: true,
  });

  mainSwiper.controller.control = thumbSwiper;
  thumbSwiper.controller.control = mainSwiper;
</script>

4. 启用无缝滚动(Loop)

<div data-swiper data-loop="true">
  <div>Slide 1</div>
  <div>Slide 2</div>
  <div>Slide 3</div>
  <div>Slide 4</div>
</div>

注意:开启循环模式时,slide 数量建议大于 slidesPerView + loopedSlides,否则会自动关闭循环模式以避免错误。

已复制