PaneFlow
隆重推出PaneFlow:视觉化创建精美幻灯片
现已集成 AI

Swiper API

如果您正在从 Swiper 9 升级到 Swiper 10,请查看 Swiper 10 迁移指南

Swiper 完整 HTML 布局

<!-- Slider main container -->
<div class="swiper">
  <!-- Additional required wrapper -->
  <div class="swiper-wrapper">
    <!-- Slides -->
    <div class="swiper-slide">Slide 1</div>
    <div class="swiper-slide">Slide 2</div>
    <div class="swiper-slide">Slide 3</div>
    ...
  </div>
  <!-- If we need pagination -->
  <div class="swiper-pagination"></div>

  <!-- If we need navigation buttons -->
  <div class="swiper-button-prev"></div>
  <div class="swiper-button-next"></div>

  <!-- If we need scrollbar -->
  <div class="swiper-scrollbar"></div>
</div>

样式

Swiper 包包含不同组的 CSS 样式

捆绑版本的 CSS 样式

  • swiper-bundle.css - 所有 Swiper 样式,包括所有模块样式(如导航、分页等)
  • swiper-bundle.min.css - 与上一个相同,但经过压缩

捆绑版本的 CSS 样式(包导入)

  • swiper/css - 所有 Swiper 样式,包括所有模块样式(如导航、分页等)
  • swiper/css/bundle - 与上一个相同,但经过压缩

核心版本和模块的 CSS 样式(包导入)

  • swiper/css - 仅核心 Swiper 样式
  • swiper/css/a11y - A11y 模块所需的样式
  • swiper/css/autoplay - Autoplay 模块所需的样式
  • swiper/css/controller - Controller 模块所需的样式
  • swiper/css/effect-cards - Cards Effect 模块所需的样式
  • swiper/css/effect-coverflow - Coverflow Effect 模块所需的样式
  • swiper/css/effect-creative - Creative Effect 模块所需的样式
  • swiper/css/effect-cube - Cube Effect 模块所需的样式
  • swiper/css/effect-fade - Fade Effect 模块所需的样式
  • swiper/css/effect-flip - Flip Effect 模块所需的样式
  • swiper/css/free-mode - Free Mode 模块所需的样式
  • swiper/css/grid - Grid 模块所需的样式
  • swiper/css/hash-navigation - Hash Navigation 模块所需的样式
  • swiper/css/history - History 模块所需的样式
  • swiper/css/keyboard - Keyboard 模块所需的样式
  • swiper/css/manipulation - Manipulation 模块所需的样式
  • swiper/css/mousewheel - Mousewheel 模块所需的样式
  • swiper/css/navigation - Navigation 模块所需的样式
  • swiper/css/pagination - Pagination 模块所需的样式
  • swiper/css/parallax - Parallax 模块所需的样式
  • swiper/css/scrollbar - Scrollbar 模块所需的样式
  • swiper/css/thumbs - Thumbs 模块所需的样式
  • swiper/css/virtual - Virtual 模块所需的样式
  • swiper/css/zoom - Zoom 模块所需的样式

初始化 Swiper

现在,当我们有了 Swiper 的 HTML 后,我们需要使用以下函数来初始化它

new Swiper(swiperContainer, parameters) - 使用选项初始化 swiper

  • swiperContainer - Swiper 容器 HTML 元素的 HTMLElement 或字符串(带 CSS 选择器)。必填。
  • parameters - object - 包含 Swiper 参数的对象。可选。
  • 该方法返回已初始化的 Swiper 实例

例如

const swiper = new Swiper('.swiper', {
  speed: 400,
  spaceBetween: 100,
});

初始化 Swiper 后,可以通过其 HTMLElement 访问 Swiper 实例。它是 Swiper HTML 容器元素的 swiper 属性

const swiper = document.querySelector('.swiper').swiper;

// Now you can use all slider methods like
swiper.slideNext();

参数

让我们看一下所有可用参数的列表

名称类型默认值描述
a11y任意

包含 a11y 参数的对象,或布尔值 true 以默认设置启用。

const swiper = new Swiper('.swiper', {
  a11y: {
    prevSlideMessage: 'Previous slide',
    nextSlideMessage: 'Next slide',
  },
});
allowSlideNext布尔值true

设置为 false 以禁用向下一个幻灯片方向滑动(向右或向下)

allowSlidePrev布尔值true

设置为 false 以禁用向上一个幻灯片方向滑动(向左或向上)

allowTouchMove布尔值true

如果为 false,则切换幻灯片的唯一方法是使用外部 API 函数,如 slidePrev 或 slideNext

autoHeight布尔值false

设置为 true,滑块包装器将根据当前活动幻灯片的高度调整其高度

autoplay任意

包含自动播放参数的对象,或布尔值 true 以默认设置启用

const swiper = new Swiper('.swiper', {
 autoplay: {
   delay: 5000,
 },
});
breakpoints对象

允许为不同的响应断点(屏幕尺寸)设置不同的参数。并非所有参数都可以在断点中更改,只有那些不需要不同布局和逻辑的参数,例如 slidesPerViewslidesPerGroupspaceBetweengrid.rows。像 loopeffect 这样的参数将不起作用

const swiper = new Swiper('.swiper', {
  // Default parameters
  slidesPerView: 1,
  spaceBetween: 10,
  // Responsive breakpoints
  breakpoints: {
    // when window width is >= 320px
    320: {
      slidesPerView: 2,
      spaceBetween: 20
    },
    // when window width is >= 480px
    480: {
      slidesPerView: 3,
      spaceBetween: 30
    },
    // when window width is >= 640px
    640: {
      slidesPerView: 4,
      spaceBetween: 40
    }
  }
})
const swiper = new Swiper('.swiper', {
  slidesPerView: 1,
  spaceBetween: 10,
  // using "ratio" endpoints
  breakpoints: {
    '@0.75': {
      slidesPerView: 2,
      spaceBetween: 20,
    },
    '@1.00': {
      slidesPerView: 3,
      spaceBetween: 40,
    },
    '@1.50': {
      slidesPerView: 4,
      spaceBetween: 50,
    },
  }
});
breakpointsBase任意'window'

断点基准(测试版)。可以是 windowcontainer。如果设置为 window(默认),则断点键表示窗口宽度。如果设置为 container,则断点键被视为 swiper 容器宽度

cardsEffect任意

包含 Cards 效果参数的对象

const swiper = new Swiper('.swiper', {
  effect: 'cards',
  cardsEffect: {
    // ...
  },
});
centerInsufficientSlides布尔值false

启用后,如果幻灯片数量少于 slidesPerView,它将居中幻灯片。不适用于 loop 模式和 grid.rows

centeredSlides布尔值false

如果为 true,则活动幻灯片将居中,而不是始终在左侧。

centeredSlidesBounds布尔值false

如果为 true,则活动幻灯片将居中,而不会在滑块的开头和结尾添加间隙。需要 centeredSlides: true。不适用于 looppagination

containerModifierClass字符串'swiper-'

可根据不同参数添加到 swiper 容器的修改器 CSS 类开头

controller任意

包含控制器参数的对象,或布尔值 true 以默认设置启用

const swiper = new Swiper('.swiper', {
  controller: {
    inverse: true,
  },
});
coverflowEffect任意

包含 Coverflow 效果参数的对象。

const swiper = new Swiper('.swiper', {
  effect: 'coverflow',
  coverflowEffect: {
    rotate: 30,
    slideShadows: false,
  },
});
createElements布尔值false

启用后,Swiper 将自动用 swiper-wrapper 元素包装幻灯片,如果启用(使用各自的参数对象或布尔值 true),它将为导航、分页和滚动条创建所需的元素

creativeEffect任意

包含 Creative 效果参数的对象

const swiper = new Swiper('.swiper', {
  effect: 'creative',
  creativeEffect: {
    prev: {
      // will set `translateZ(-400px)` on previous slides
      translate: [0, 0, -400],
    },
    next: {
      // will set `translateX(100%)` on next slides
      translate: ['100%', 0, 0],
    },
  },
});
cssMode布尔值false

启用后,它将使用现代 CSS Scroll Snap API。它不支持 Swiper 的所有功能,但在简单配置中可能会带来更好的性能。

启用时不支持以下功能

  • 立方体效果
  • speed 参数可能没有效果
  • 所有与过渡开始/结束相关的事件(请改用 slideChange
  • slidesPerGroup 支持有限
  • simulateTouch 没有效果,“用鼠标拖动”不起作用
  • resistance 没有任何效果
  • allowSlidePrev/Next
  • swipeHandler

如果您将其与其他效果,特别是 3D 效果一起使用,则需要将幻灯片内容包装在 <div className="swiper-slide-transform"> 元素中。如果您在幻灯片上使用任何自定义样式(如背景颜色、边框半径、边框等),它们应该设置在 swiper-slide-transform 元素上。

<div class="swiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide">
      <!-- wrap slide content with transform element -->
      <div class="swiper-slide-transform">
        ... slide content ...
      </div>
    </div>
    ...
  </div>
</div>
<script>
const swiper = new Swiper('.swiper', {
   effect: 'flip',
   cssMode: true,
 });
</script>
cubeEffect任意

包含 Cube 效果参数的对象

const swiper = new Swiper('.swiper', {
  effect: 'cube',
  cubeEffect: {
    slideShadows: false,
  },
});
direction'horizontal' | 'vertical''horizontal'

可以是 'horizontal''vertical'(用于垂直滑块)。

edgeSwipeDetection字符串 | 布尔值false

启用以在应用程序中释放 Swiper 事件以进行滑动返回工作。如果设置为 'prevent',则会阻止系统滑动返回导航。此功能仅适用于“触摸”事件(而非指针事件),因此它将在 iOS/Android 设备上工作,但在带有指针(触摸)事件的 Windows 设备上不起作用。

edgeSwipeThreshold数字20

屏幕左边缘的区域(以 px 为单位),用于在应用程序中释放触摸事件以进行滑动返回

effect | 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards''slide'

过渡效果。可以是 'slide''fade''cube''coverflow''flip''creative''cards'

enabled布尔值true

Swiper 最初是否启用。当 Swiper 被禁用时,它将隐藏所有导航元素,并且不会响应任何事件和交互

eventsPrefix字符串`swiper`

Swiper Element(Web 组件)发出的所有 DOM 事件的事件名称前缀

fadeEffect任意

包含 Fade 效果参数的对象

const swiper = new Swiper('.swiper', {
  effect: 'fade',
  fadeEffect: {
    crossFade: true
  },
});
flipEffect任意

包含 Flip 效果参数的对象

const swiper = new Swiper('.swiper', {
  effect: 'flip',
  flipEffect: {
    slideShadows: false,
  },
});
focusableElements字符串'input, select, option, textarea, button, video, label'

可聚焦元素的 CSS 选择器。如果这些元素“聚焦”,则在其上禁用滑动

followFinger布尔值true

如果禁用,则滑块只会在您松开手指时动画,当您将手指按在上面时它不会移动

freeMode任意

启用自由模式功能。包含自由模式参数的对象,或布尔值 true 以默认设置启用。

const swiper = new Swiper('.swiper', {
  freeMode: true,
});

const swiper = new Swiper('.swiper', {
  freeMode: {
    enabled: true,
    sticky: true,
  },
});
grabCursor布尔值false

此选项可能会稍微改善桌面可用性。如果为 true,用户在悬停在 Swiper 上时将看到“抓取”光标

grid任意

包含网格参数的对象,以启用“多行”滑块。

const swiper = new Swiper('.swiper', {
  grid: {
    rows: 2,
  },
});
hashNavigation任意

启用幻灯片的哈希 URL 导航。包含哈希导航参数的对象,或布尔值 true 以默认设置启用

const swiper = new Swiper('.swiper', {
  hashNavigation: {
    replaceState: true,
  },
});
heightnull | 数字null

Swiper 高度(以 px 为单位)。参数允许强制 Swiper 高度。仅当您在隐藏和 SSR 及测试环境中初始化 Swiper 以进行正确 Swiper 初始化时才有用

设置此参数将使 Swiper 不响应

history任意

启用历史推送状态,其中每个幻灯片都将拥有自己的 URL。在此参数中,您必须指定主幻灯片 URL,例如 "slides",并使用 data-history 属性指定每个幻灯片的 URL。

包含历史导航参数的对象,或布尔值 true 以默认设置启用

const swiper = new Swiper('.swiper', {
  history: {
    replaceState: true,
  },
});
<!-- will produce "slides/slide1" url in browser history -->
<div class="swiper-slide" data-history="slide1"></div>
init布尔值true

当您创建实例时,Swiper 是否应自动初始化。如果禁用,则需要通过调用 swiper.init() 手动初始化

initialSlide数字0

初始幻灯片的索引号。

injectStylesstring[]

将文本样式注入到 shadow DOM 中。仅用于 Swiper Element

injectStylesUrlsstring[]

将样式 <link> 注入到 shadow DOM 中。仅用于 Swiper Element

keyboard任意

启用使用键盘在幻灯片之间导航。包含键盘参数的对象,或布尔值 true 以默认设置启用

const swiper = new Swiper('.swiper', {
  keyboard: {
    enabled: true,
    onlyInViewport: false,
  },
});
lazyPreloadPrevNext数字0

要预加载的下一个和上一个幻灯片数量。仅在使用延迟加载时适用。

lazyPreloaderClass字符串'swiper-lazy-preloader'

延迟预加载器的 CSS 类名

longSwipes布尔值true

如果您想禁用长滑动,请设置为 false

longSwipesMs数字300

在长滑动期间触发滑动到下一张/上一张幻灯片的最小持续时间(以毫秒为单位)

longSwipesRatio数字0.5

在长滑动期间触发滑动到下一张/上一张幻灯片的比率

loop布尔值false

设置为 true 以启用连续循环模式

由于循环模式的工作原理(它将重新排列幻灯片),幻灯片总数必须

  • 大于或等于 slidesPerView + slidesPerGroup
  • 甚至 slidesPerGroup(或使用 loopAddBlankSlides 参数)
  • 甚至 grid.rows(或使用 loopAddBlankSlides 参数)
loopAddBlankSlides布尔值true

如果您使用 Grid 或 slidesPerGroup 并且幻灯片总数与 slidesPerGroupgrid.rows 不相等,则自动添加空白幻灯片

loopAdditionalSlides数字0

允许增加循环幻灯片的数量

loopPreventsSliding布尔值true

如果启用,则在循环模式下,当滑块正在动画时,slideNext/Prev 将不起作用

maxBackfaceHiddenSlides数字10

如果幻灯片总数小于此处指定的值,则 Swiper 将在幻灯片元素上启用 backface-visibility: hidden 以减少 Safari 中的视觉“闪烁”。

不建议在大量幻灯片上启用它,因为它会降低性能

modulesany[]

包含 Swiper 模块的数组

import Swiper from 'swiper';
import { Navigation, Pagination } from 'swiper/modules';

const swiper = new Swiper('.swiper', {
   modules: [ Navigation, Pagination ],
 });
mousewheel任意

启用使用鼠标滚轮在幻灯片之间导航。包含鼠标滚轮参数的对象,或布尔值 true 以默认设置启用

const swiper = new Swiper('.swiper', {
  mousewheel: {
    invert: true,
  },
});
navigation任意

包含导航参数的对象,或布尔值 true 以默认设置启用。

const swiper = new Swiper('.swiper', {
  navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
  },
});
nested布尔值false

在 Swiper 上设置为 true 以正确拦截触摸事件。仅在与父级方向相同的 swiper 上使用

noSwiping布尔值true

启用/禁用在与 noSwipingClass 中指定的类匹配的元素上滑动

noSwipingClass字符串'swiper-no-swiping'

指定 noSwiping 的元素 CSS 类

noSwipingSelector字符串

可以代替 noSwipingClass 使用,以指定禁用滑动的元素。例如,'input' 将禁用所有输入上的滑动

normalizeSlideIndex布尔值true

标准化幻灯片索引。

observeParents布尔值false

如果您还需要监视 Swiper 父元素的 Mutation,请设置为 true

observeSlideChildren布尔值false

如果您还需要监视 Swiper 子元素的 Mutation,请设置为 true

observer布尔值false

设置为 true 以在 Swiper 及其元素上启用 Mutation Observer。在这种情况下,如果您更改其样式(如隐藏/显示)或修改其子元素(如添加/删除幻灯片),Swiper 将每次更新(重新初始化)

on对象

注册事件处理程序

onAnyfunction(handler)

添加将在所有事件上触发的事件监听器

const swiper = new Swiper('.swiper', {
   onAny(eventName, ...args) {
     console.log('Event: ', eventName);
     console.log('Event data: ', args);
   }
 });
oneWayMovement布尔值false

启用后,无论滑动方向如何,都只向前滑动(单向)幻灯片

pagination任意

包含分页参数的对象,或布尔值 true 以默认设置启用。

const swiper = new Swiper('.swiper', {
  pagination: {
    el: '.swiper-pagination',
    type: 'bullets',
  },
});
parallax任意

包含视差参数的对象,或布尔值 true 以默认设置启用。

const swiper = new Swiper('.swiper', {
  parallax: true,
});
passiveListeners布尔值true

在可能的情况下,默认将使用被动事件监听器来改善移动设备上的滚动性能。但是,如果您需要使用 e.preventDefault 并且与它发生冲突,则应禁用此参数

preventClicks布尔值true

设置为 true 以防止在滑动过程中意外点击链接

preventClicksPropagation布尔值true

设置为 true 以阻止在滑动过程中点击事件传播到链接

preventInteractionOnTransition布尔值false

启用后,在过渡期间不允许通过滑动或导航/分页按钮更改幻灯片

resistance布尔值true

如果您想禁用弹性边界,请设置为 false

resistanceRatio数字0.85

此选项允许您控制阻力比

resizeObserver布尔值true

启用后,它将在 swiper 容器上使用 ResizeObserver(如果浏览器支持)来检测容器大小调整(而不是监视窗口大小调整)

rewind布尔值false

设置为 true 以启用“倒带”模式。启用后,在最后一张幻灯片上单击“下一张”导航按钮(或调用 .slideNext())将滑回到第一张幻灯片。在第一张幻灯片上单击“上一张”导航按钮(或调用 .slidePrev())将向前滑动到最后一张幻灯片。

不应与 loop 模式一起使用

roundLengths布尔值false

设置为 true 以舍入幻灯片宽度和高度的值,以防止在常规分辨率屏幕上出现模糊文本(如果您有此类问题)

runCallbacksOnInit布尔值true

在 swiper 初始化时触发 Transition/SlideChange/Start/End 事件。如果您的 initialSlide 不为 0,或者您使用循环模式,则在初始化时将触发此类事件

scrollbar任意

包含滚动条参数的对象,或布尔值 true 以默认设置启用。

const swiper = new Swiper('.swiper', {
  scrollbar: {
    el: '.swiper-scrollbar',
    draggable: true,
  },
});
setWrapperSize布尔值false

启用此选项,插件将设置 swiper 包装器的宽度/高度等于所有幻灯片的总大小。主要应作为浏览器不支持 flexbox 布局的兼容性回退选项使用

shortSwipes布尔值true

如果您想禁用短滑动,请设置为 false

simulateTouch布尔值true

如果为 true,Swiper 将像触摸事件一样接受鼠标事件(单击和拖动以更改幻灯片)

slideActiveClass字符串'swiper-slide-active'

当前活动幻灯片的 CSS 类名

通过更改类,您还需要更改 Swiper 的 CSS 以反映更改的类

在 Swiper React/Vue 组件中不支持

slideBlankClass字符串'swiper-slide-blank'

由循环模式添加的空白幻灯片的 CSS 类名(当 loopAddBlankSlides 启用时)

在 Swiper React/Vue 中不支持

slideClass字符串'swiper-slide'

幻灯片的 CSS 类名

通过更改类,您还需要更改 Swiper 的 CSS 以反映更改的类

在 Swiper React/Vue 组件中不支持

slideFullyVisibleClass字符串'swiper-slide-fully-visible'

完全(当整个幻灯片在视口中时)可见幻灯片的 CSS 类名

在 Swiper React/Vue 中不支持

slideNextClass字符串'swiper-slide-next'

当前活动幻灯片之后紧邻的幻灯片的 CSS 类名

通过更改类,您还需要更改 Swiper 的 CSS 以反映更改的类

在 Swiper React/Vue 中不支持

slidePrevClass字符串'swiper-slide-prev'

当前活动幻灯片之前紧邻的幻灯片的 CSS 类名

通过更改类,您还需要更改 Swiper 的 CSS 以反映更改的类

在 Swiper React/Vue 中不支持

slideToClickedSlide布尔值false

设置为 true,点击任何幻灯片都将导致过渡到此幻灯片

slideVisibleClass字符串'swiper-slide-visible'

当前/部分可见幻灯片的 CSS 类名

通过更改类,您还需要更改 Swiper 的 CSS 以反映更改的类

在 Swiper React/Vue 中不支持

slidesOffsetAfter数字0

在容器末尾(所有幻灯片之后)添加(以 px 为单位)额外的幻灯片偏移

slidesOffsetBefore数字0

在容器开头(所有幻灯片之前)添加(以 px 为单位)额外的幻灯片偏移

slidesPerGroup数字1

设置幻灯片数量以定义和启用组滑动。与 slidesPerView > 1 一起使用时很有用

slidesPerGroupAuto布尔值false

此参数仅适用于 slidesPerView: 'auto'slidesPerGroup: 1。启用后,它将在调用 .slideNext().slidePrev() 方法时,在导航“按钮”点击时以及在自动播放中跳过视图中的所有幻灯片。

slidesPerGroupSkip数字0

该参数的工作方式如下:如果 slidesPerGroupSkip 等于 0(默认),则没有幻灯片被排除在分组之外,结果行为与没有此更改时相同。

如果 slidesPerGroupSkip 等于或大于 1,则前 X 张幻灯片被视为单个组,而所有后续幻灯片按 slidesPerGroup 值分组。

slidesPerView数字 | 'auto'1

每视图幻灯片数量(在滑块容器上同时可见的幻灯片)。

slidesPerView: 'auto' 目前与多行模式不兼容,当 grid.rows > 1 时

spaceBetween字符串 | 数字0

幻灯片之间的距离(以 px 为单位)。

如果您对传入 "spaceBetween" 的 Swiper 元素使用 "margin" css 属性,导航可能无法正常工作。

speed数字300

幻灯片之间过渡的持续时间(以毫秒为单位)

swipeHandler任意null

带有 CSS 选择器或包含分页的 HTML 元素的字符串或 HTML 元素,该元素将作为唯一可用的滑动处理程序

swiperElementNodeName字符串'SWIPER-CONTAINER'

swiper 元素节点名称的名称;用于检测 web 组件渲染

threshold数字5

阈值(以 px 为单位)。如果“触摸距离”低于此值,则 swiper 将不会移动

thumbs任意

包含缩略图组件参数的对象

const swiper = new Swiper('.swiper', {
  ...
  thumbs: {
    swiper: thumbsSwiper
  }
});
touchAngle数字45

触发触摸移动的允许角度(以度为单位)

touchEventsTarget'container' | 'wrapper''wrapper'

监听触摸事件的目标元素。可以是 'container'(监听 swiper 上的触摸事件)或 'wrapper'(监听 swiper-wrapper 上的触摸事件)

touchMoveStopPropagation布尔值false

如果启用,则将停止“touchmove”的传播

touchRatio数字1

触摸比率

touchReleaseOnEdges布尔值false

启用以在滑块边缘位置(开始、结束)释放触摸事件,以允许进一步的页面滚动。此功能仅适用于“触摸”事件(而非指针事件),因此它将在 iOS/Android 设备上工作,但在带有指针事件的 Windows 设备上不起作用。此外,threshold 参数必须设置为 0

touchStartForcePreventDefault布尔值false

强制始终阻止 touchstart (pointerdown) 事件的默认行为

touchStartPreventDefault布尔值true

如果禁用,则不会阻止 pointerdown 事件

uniqueNavElements布尔值true

如果启用(默认)且导航元素参数作为字符串传递(如 ".pagination"),则 Swiper 将首先通过子元素查找此类元素。适用于分页、上一个/下一个按钮和滚动条元素

updateOnWindowResize布尔值true

Swiper 将在窗口大小调整(方向更改)时重新计算幻灯片位置

urlnull | 字符串null

在服务器端渲染和启用历史记录时,需要用于活动幻灯片检测

userAgentnull | 字符串null

用户代理字符串。在服务器端渲染时需要用于浏览器/设备检测

virtual任意

启用虚拟幻灯片功能。包含虚拟幻灯片参数的对象,或布尔值 true 以默认设置启用。

const swiper = new Swiper('.swiper', {
  virtual: {
    slides: ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5'],
  },
});
virtualTranslate布尔值false

启用此选项后,swiper 将正常运行,只是它不会移动,不会设置包装器上的实际 translate 值。当您可能需要创建自定义幻灯片过渡时很有用

watchOverflow布尔值true

启用后,如果幻灯片不足以滑动,Swiper 将被禁用并隐藏导航按钮。

watchSlidesProgress布尔值false

启用此功能以计算每个幻灯片的进度和可见性(视口中的幻灯片将具有额外的可见类)

widthnull | 数字null

Swiper 宽度(以 px 为单位)。参数允许强制 Swiper 宽度。仅当您在隐藏和 SSR 及测试环境中初始化 Swiper 以进行正确 Swiper 初始化时才有用

设置此参数将使 Swiper 不响应

wrapperClass字符串'swiper-wrapper'

幻灯片包装器的 CSS 类名

通过更改类,您还需要更改 Swiper 的 CSS 以反映更改的类

在 Swiper React/Vue 中不支持

zoom任意

启用缩放功能。包含缩放参数的对象,或布尔值 true 以默认设置启用

const swiper = new Swiper('.swiper', {
  zoom: {
    maxRatio: 5,
  },
});

方法和属性

初始化滑块后,我们在变量中(如上面示例中的 swiper 变量)拥有其已初始化实例,其中包含有用的方法和属性

属性
swiper.a11y任意
swiper.activeIndex数字

当前活动幻灯片的索引号

请注意,在循环模式下,活动索引值将始终根据循环幻灯片数量进行偏移

swiper.allowSlideNext布尔值

通过为此属性分配 false / true 来禁用/启用滑动到下一个幻灯片的能力

swiper.allowSlidePrev布尔值

通过为此属性分配 false / true 来禁用/启用滑动到上一个幻灯片的能力

swiper.allowTouchMove布尔值

通过为此属性分配 false / true 来禁用/启用通过鼠标抓取或手指触摸(在触摸屏上)移动滑块的能力

swiper.animating布尔值

如果 swiper 正在过渡中,则为 true

swiper.autoplay任意
swiper.cardsEffect任意
swiper.clickedIndex数字

上次点击的幻灯片的索引号

swiper.clickedSlideHTMLElement

指向上次点击的幻灯片的链接(HTMLElement)

swiper.controller任意
swiper.coverflowEffect任意
swiper.creativeEffect任意
swiper.cubeEffect任意
swiper.defaults任意

Swiper 默认选项

swiper.elHTMLElement

滑块容器 HTML 元素

swiper.enabled布尔值

如果 Swiper 已启用,则为 true,否则为 false

swiper.extendedDefaults任意

包含全局 Swiper 扩展选项的对象

swiper.fadeEffect任意
swiper.flipEffect任意
swiper.freeMode任意
swiper.hashNavigation任意
swiper.height数字

容器的高度

swiper.history任意
swiper.isBeginning布尔值

如果滑块位于最“左”/“上”位置,则为 true

swiper.isEnd布尔值

如果滑块位于最“右”/“下”位置,则为 true

swiper.isLocked布尔值

如果幻灯片被“锁定”(通过 watchOverflow),并且无法滑动,例如,当幻灯片数量少于每视图幻灯片数量时,则为 true

swiper.keyboard任意
swiper.mousewheel任意
swiper.navigation任意
swiper.originalParams任意

包含原始初始化参数的对象

swiper.pagination任意
swiper.parallax任意
swiper.params任意

包含传入初始化参数的对象

swiper.previousIndex数字

上一个活动幻灯片的索引号

swiper.progress数字

包装器 translate 的当前进度(从 0 到 1)

swiper.realIndex数字

在循环模式下考虑重新排列的幻灯片后,当前活动幻灯片的索引号

swiper.scrollbar任意
swiper.slidesHTMLElement[]

幻灯片 HTML 元素数组。要获取特定的幻灯片 HTMLElement,请使用 swiper.slides[1]

swiper.slidesElHTMLElement

包装器 HTML 元素

swiper.slidesGridnumber[]

幻灯片网格

swiper.slidesSizesGridnumber[]

幻灯片的宽度数组

swiper.snapGridnumber[]

幻灯片捕捉网格

swiper.snapIndex数字

snapGrid 中当前捕捉点的索引号

swiper.swipeDirection'prev' | 'next'

滑动方向

swiper.thumbs任意
swiper.touches对象

包含以下触摸事件属性的对象

  • swiper.touches.startX
  • swiper.touches.startY
  • swiper.touches.currentX
  • swiper.touches.currentY
  • swiper.touches.diff
swiper.translate数字

包装器 translate 的当前值

swiper.virtual任意
swiper.width数字

容器的宽度

swiper.wrapperElHTMLElement

包装器 HTML 元素

swiper.zoom任意
方法
swiper.attachEvents()

再次附加所有事件监听器

swiper.changeDirection(direction, needUpdate)

将滑块方向从水平更改为垂直,然后再更改回来。

  • direction - 'horizontal' | 'vertical' - 新方向。如果未指定,则将自动更改为相反方向
  • needUpdate - boolean - 将调用 swiper.update()。默认为 true
swiper.changeLanguageDirection(direction)

更改滑块语言

  • direction - 'rtl' | 'ltr' - 新方向。应为 `rtl` 或 `ltr`
swiper.destroy(deleteInstance, cleanStyles)

销毁滑块实例并分离所有事件监听器

  • deleteInstance - boolean - 将其设置为 false(默认为 true),以不删除 Swiper 实例
  • cleanStyles - boolean - 将其设置为 true(默认为 true),所有自定义样式将从幻灯片、包装器和容器中删除。如果您需要销毁 Swiper 并使用新选项或不同方向重新初始化时很有用
swiper.detachEvents()

分离所有事件监听器

swiper.disable()

禁用 Swiper(如果已启用)。当 Swiper 被禁用时,它将隐藏所有导航元素,并且不会响应任何事件和交互

swiper.emit(event, args)

在实例上触发事件

swiper.enable()

启用 Swiper(如果已禁用)

swiper.extendDefaults(options)

扩展全局 Swiper 默认值

swiper.getTranslate()

获取 swiper 包装器 css3 transform translate 的当前值

swiper.init(el)

初始化滑块

swiper.maxTranslate()

获取当前最大 translate 值

swiper.minTranslate()

获取当前最小 translate 值

swiper.off(event, handler)

移除事件处理程序

swiper.offAny(handler)

移除将在所有事件上触发的事件监听器

swiper.on(event, handler)

添加事件处理程序

swiper.onAny(handler)

添加将在所有事件上触发的事件监听器

swiper.once(event, handler)

添加事件处理程序,该处理程序在触发后将被移除

swiper.setGrabCursor()

设置抓取光标

swiper.setProgress(progress, speed)

设置 Swiper 转换进度(从 0 到 1)。其中 0 是第一张幻灯片的初始位置(偏移),1 是最后一张幻灯片的最大位置(偏移)

  • progress - number - Swiper 转换进度(从 0 到 1)。
  • speed - number - 过渡持续时间(以毫秒为单位)。
swiper.setTranslate(translate)

为 swiper 包装器设置自定义 css3 transform 的 translate 值

swiper.slideNext(speed, runCallbacks)

运行到下一张幻灯片的过渡。

  • speed - number - 过渡持续时间(以毫秒为单位)。
  • runCallbacks - boolean - 将其设置为 false(默认为 true),过渡将不会产生过渡事件。
swiper.slidePrev(speed, runCallbacks)

运行到上一张幻灯片的过渡。

  • speed - number - 过渡持续时间(以毫秒为单位)。
  • runCallbacks - boolean - 将其设置为 false(默认为 true),过渡将不会产生过渡事件。
swiper.slideReset(speed, runCallbacks)

将 swiper 位置重置到当前活动幻灯片,持续时间等于“speed”参数。

  • speed - number - 过渡持续时间(以毫秒为单位)。
  • runCallbacks - boolean - 将其设置为 false(默认为 true),过渡将不会产生过渡事件。
swiper.slideTo(index, speed, runCallbacks)

运行到索引号等于“index”参数的幻灯片的过渡,持续时间等于“speed”参数。

  • index - number - 幻灯片的索引号。
  • speed - number - 过渡持续时间(以毫秒为单位)。
  • runCallbacks - boolean - 将其设置为 false(默认为 true),过渡将不会产生过渡事件。
swiper.slideToClosest(speed, runCallbacks)

将 swiper 位置重置到最近的幻灯片/捕捉点,持续时间等于“speed”参数。

  • speed - number - 过渡持续时间(以毫秒为单位)。
  • runCallbacks - boolean - 将其设置为 false(默认为 true),过渡将不会产生过渡事件。
swiper.slideToLoop(index, speed, runCallbacks)

与 .slideTo 作用相同,但用于启用循环的情况。因此,此方法将滑动到 realIndex 与传入索引匹配的幻灯片

  • index - number - 幻灯片的索引号。
  • speed - number - 过渡持续时间(以毫秒为单位)。
  • runCallbacks - boolean - 将其设置为 false(默认为 true),过渡将不会产生过渡事件。
swiper.slidesPerViewDynamic()

动态计算每视图幻灯片数量,仅当 slidesPerView 设置为 auto 时有用

swiper.translateTo(translate, speed, runCallbacks, translateBounds)

为 swiper 包装器动画自定义 css3 transform 的 translate 值

  • translate - number - 转换值(以 px 为单位)
  • speed - number - 过渡持续时间(以毫秒为单位)
  • runCallbacks - boolean - 将其设置为 false(默认为 true),过渡将不会产生过渡事件
  • translateBounds - boolean - 将其设置为 false(默认为 true),转换值可以超出最小和最大转换范围
swiper.unsetGrabCursor()

取消设置抓取光标

swiper.update()

手动添加/删除幻灯片后,或隐藏/显示它之后,或对 Swiper 进行任何自定义 DOM 修改之后,您应该调用此方法。此方法还包括以下方法的子调用,您可以单独使用它们

swiper.updateAutoHeight(speed)

强制 swiper 更新其高度(当 autoHeight 启用时),持续时间等于“speed”参数

  • speed - number - 过渡持续时间(以毫秒为单位)。
swiper.updateProgress()

重新计算 swiper 进度

swiper.updateSize()

重新计算 swiper 容器的大小

swiper.updateSlides()

重新计算幻灯片数量及其偏移量。在您使用 JavaScript 添加/删除幻灯片后很有用

swiper.updateSlidesClasses()

更新幻灯片和项目符号上的 active/prev/next 类

swiper.use(modules)

在运行时在 Swiper 上安装模块。

事件

Swiper 附带了许多有用的事件,您可以监听。事件可以通过两种方式分配

  1. 在 swiper 初始化时使用 on 参数

    const swiper = new Swiper('.swiper', {
      // ...
      on: {
        init: function () {
          console.log('swiper initialized');
        },
      },
    });
    
  2. 在 swiper 初始化后使用 on 方法。

    const swiper = new Swiper('.swiper', {
      // ...
    });
    swiper.on('slideChange', function () {
      console.log('slide changed');
    });
    
请注意,事件处理程序中的 this 关键字始终指向 Swiper 实例
名称参数描述
activeIndexChange(swiper)

活动索引更改时触发事件

afterInit(swiper)

初始化后立即触发事件

beforeDestroy(swiper)

在 Swiper 销毁之前立即触发事件

beforeInit(swiper)

初始化之前立即触发事件

beforeLoopFix(swiper)

在“循环修复”之前立即触发事件

beforeResize(swiper)

在 resize 处理程序之前触发事件

beforeSlideChangeStart(swiper)

幻灯片更改过渡开始之前触发事件

beforeTransitionStart(swiper, speed, internal)

过渡开始之前触发事件

breakpoint(swiper, breakpointParams)

在断点更改时触发事件

changeDirection(swiper)

方向更改时触发事件

click(swiper, event)

用户点击/轻触 Swiper 时触发事件。接收 pointerup 事件作为参数。

destroy(swiper)

swiper 销毁时触发事件

doubleClick(swiper, event)

用户双击/轻触 Swiper 时触发事件

doubleTap(swiper, event)

用户双击 Swiper 容器时触发事件。接收 pointerup 事件作为参数

fromEdge(swiper)

Swiper 从开始或结束位置离开时触发事件

init(swiper)

Swiper 初始化后立即触发。

请注意,使用 swiper.on('init') 语法,它仅在您设置 init: false 参数时才有效。

const swiper = new Swiper('.swiper', {
  init: false,
  // other parameters
});
swiper.on('init', function() {
 // do something
});
// init Swiper
swiper.init();
// Otherwise use it as the parameter:
const swiper = new Swiper('.swiper', {
  // other parameters
  on: {
    init: function () {
      // do something
    },
  }
});
lock(swiper)

当 swiper 被锁定(当 watchOverflow 启用时)时触发事件

loopFix(swiper)

在“循环修复”之后触发事件

momentumBounce(swiper)

在动量反弹时触发事件

observerUpdate(swiper)

如果 observer 启用并检测到 DOM 突变,则触发事件

orientationchange(swiper)

在方向更改时触发事件(例如,横向 -> 纵向)

progress(swiper, progress)

Swiper 进度更改时触发事件,作为参数,它接收始终从 0 到 1 的进度

reachBeginning(swiper)

Swiper 到达其开始位置(初始位置)时触发事件

reachEnd(swiper)

Swiper 到达最后一张幻灯片时触发事件

realIndexChange(swiper)

实际索引更改时触发事件

resize(swiper)

在 swiper 的 onresize 操作之前,在窗口大小调整时触发事件

setTransition(swiper, transition)

每次 swiper 开始动画时触发事件。接收当前过渡持续时间(以毫秒为单位)作为参数

setTranslate(swiper, translate)

swiper 包装器更改其位置时触发事件。接收当前 translate 值作为参数

slideChange(swiper)

当前活动幻灯片更改时触发事件

slideChangeTransitionEnd(swiper)

动画到其他幻灯片(下一张或上一张)之后触发事件。

slideChangeTransitionStart(swiper)

动画到其他幻灯片(下一张或上一张)开始时触发事件。

slideNextTransitionEnd(swiper)

与“slideChangeTransitionEnd”相同,但仅适用于“向前”方向

slideNextTransitionStart(swiper)

与“slideChangeTransitionStart”相同,但仅适用于“向前”方向

slidePrevTransitionEnd(swiper)

与“slideChangeTransitionEnd”相同,但仅适用于“向后”方向

slidePrevTransitionStart(swiper)

与“slideChangeTransitionStart”相同,但仅适用于“向后”方向

slideResetTransitionEnd(swiper)

幻灯片重置为当前幻灯片的动画结束时触发事件

slideResetTransitionStart(swiper)

幻灯片重置为当前幻灯片的动画开始时触发事件

sliderFirstMove(swiper, event)

第一次触摸/拖动移动时触发事件

sliderMove(swiper, event)

用户触摸并移动手指在 Swiper 上并移动它时触发事件。接收 pointermove 事件作为参数。

slidesGridLengthChange(swiper)

幻灯片网格更改时触发事件

slidesLengthChange(swiper)

幻灯片数量更改时触发事件

slidesUpdated(swiper)

计算并更新幻灯片及其大小后触发事件

snapGridLengthChange(swiper)

捕捉网格更改时触发事件

snapIndexChange(swiper)

捕捉索引更改时触发事件

tap(swiper, event)

用户点击/轻触 Swiper 时触发事件。接收 pointerup 事件作为参数。

toEdge(swiper)

Swiper 到达开始或结束位置时触发事件

touchEnd(swiper, event)

用户释放 Swiper 时触发事件。接收 pointerup 事件作为参数。

touchMove(swiper, event)

用户触摸并移动手指在 Swiper 上时触发事件。接收 pointermove 事件作为参数。

touchMoveOpposite(swiper, event)

用户触摸并移动手指在 Swiper 上,方向与 direction 参数相反时触发事件。接收 pointermove 事件作为参数。

touchStart(swiper, event)

用户触摸 Swiper 时触发事件。接收 pointerdown 事件作为参数。

transitionEnd(swiper)

过渡后触发事件。

transitionStart(swiper)

过渡开始时触发事件。

unlock(swiper)

当 swiper 被解锁(当 watchOverflow 启用时)时触发事件

更新(swiper)

在调用 swiper.update() 后触发事件

模块

名称类型默认值描述
disabledClass字符串'swiper-button-disabled'

导航按钮禁用时添加的 CSS 类名

enabled布尔值

用于断点以启用/禁用某些断点上的导航的布尔属性

hiddenClass字符串'swiper-button-hidden'

导航按钮隐藏时添加的 CSS 类名

hideOnClick布尔值false

单击滑块容器后切换导航按钮可见性

lockClass字符串'swiper-button-lock'

导航按钮禁用时添加的 CSS 类名

navigationDisabledClass字符串'swiper-navigation-disabled'

当导航被断点禁用时,添加到 swiper 容器的 CSS 类名

nextEl任意null

带有 CSS 选择器或 HTML 元素的字符串或 HTML 元素,该元素在点击后将作为“下一个”按钮

prevEl任意null

带有 CSS 选择器或 HTML 元素的字符串或 HTML 元素,该元素在点击后将作为“上一个”按钮

属性
swiper.nextElHTMLElement

“下一个”导航按钮的 HTMLElement

swiper.prevElHTMLElement

“上一个”导航按钮的 HTMLElement

方法
swiper.destroy()

销毁导航

swiper.init()

初始化导航

swiper.update()

更新导航按钮状态(启用/禁用)

名称参数描述
navigationHide(swiper)

导航隐藏时触发事件

navigationNext(swiper)

导航下一个按钮点击时触发事件

navigationPrev(swiper)

导航上一个按钮点击时触发事件

navigationShow(swiper)

导航显示时触发事件

 {
  --swiper-navigation-size: 44px;
  --swiper-navigation-top-offset: 50%;
  --swiper-navigation-sides-offset: 10px;
  --swiper-navigation-color: var(--swiper-theme-color);
}

分页

分页参数

名称类型默认值描述
bulletActiveClass字符串'swiper-pagination-bullet-active'

当前活动分页子弹的 CSS 类名

bulletClass字符串'swiper-pagination-bullet'

单个分页子弹的 CSS 类名

bulletElement字符串'span'

定义将用于表示单个分页子弹的 HTML 标签。仅适用于 'bullets' 分页类型。

clickable布尔值false

如果为 true,则单击分页按钮将导致过渡到相应的幻灯片。仅适用于子弹分页类型

clickableClass字符串'swiper-pagination-clickable'

分页可点击时设置的 CSS 类名

currentClass字符串'swiper-pagination-current'

在“分数”分页中,当前活动索引元素的 CSS 类名

dynamicBullets布尔值false

如果您使用子弹分页且幻灯片很多,则启用它会很好。这样它将同时只显示几个子弹。

dynamicMainBullets数字1

启用 dynamicBullets 时可见的主子弹数量。

el任意null

带有 CSS 选择器或 HTML 元素的分页容器的字符串或 HTML 元素

enabled布尔值

用于断点以启用/禁用某些断点上的分页的布尔属性

formatFractionCurrentfunction(number)

格式化分数分页当前数字。函数接收当前数字,您需要返回格式化的值

formatFractionTotalfunction(number)

格式化分数分页总数。函数接收总数,您需要返回格式化的值

hiddenClass字符串'swiper-pagination-hidden'

分页不活动时,其 CSS 类名

hideOnClick布尔值true

单击滑块容器后切换(隐藏/显示)分页容器可见性

horizontalClass字符串'swiper-pagination-horizontal'

在水平 Swiper 中,设置为分页的 CSS 类名

lockClass字符串'swiper-pagination-lock'

分页禁用时,设置为分页的 CSS 类名

modifierClass字符串'swiper-pagination-'

根据参数将添加到分页的修改器 CSS 类名的开头

paginationDisabledClass字符串'swiper-pagination-disabled'

当分页被断点禁用时,添加到 swiper 容器和分页元素的 CSS 类名

progressbarFillClass字符串'swiper-pagination-progressbar-fill'

分页进度条填充元素的 CSS 类名

progressbarOpposite布尔值false

使分页进度条与 Swiper 的 direction 参数相反,意味着水平 swiper 方向的垂直进度条和垂直 swiper 方向的水平进度条

progressbarOppositeClass字符串'swiper-pagination-progressbar-opposite'

分页进度条相反的 CSS 类名

renderBulletfunction(index, className)

此参数允许完全自定义分页子弹,您需要在此处传递一个接受分页子弹的 index 数字和所需的元素类名 (className) 的函数。仅适用于 'bullets' 分页类型

const swiper = new Swiper('.swiper', {
  //...
  pagination: {
    //...
    renderBullet: function (index, className) {
      return '<span class="' + className + '">' + (index + 1) + '</span>';
    },
  },
});
renderCustomfunction(swiper, current, total)

此参数是 'custom' 分页类型所必需的,您必须指定应如何渲染它。

const swiper = new Swiper('.swiper', {
  //...
  pagination: {
    //...
    renderCustom: function (swiper, current, total) {
      return current + ' of ' + total;
    },
  },
});
renderFractionfunction(currentClass, totalClass)

此参数允许自定义“分数”分页 HTML。仅适用于 'fraction' 分页类型

const swiper = new Swiper('.swiper', {
  //...
  pagination: {
    //...
    renderFraction: function (currentClass, totalClass) {
      return '<span class="' + currentClass + '"></span>' +
              ' of ' +
              '<span class="' + totalClass + '"></span>';
    },
  },
});
renderProgressbarfunction(progressbarFillClass)

此参数允许自定义“进度”分页。仅适用于 'progress' 分页类型

const swiper = new Swiper('.swiper', {
  //...
  pagination: {
    //...
    renderProgressbar: function (progressbarFillClass) {
      return '<span class="' + progressbarFillClass + '"></span>';
    },
  },
});
totalClass字符串'swiper-pagination-total'

在“分数”分页中,包含“捕捉”总数的元素的 CSS 类名

type'progressbar' | 'bullets' | 'fraction' | 'custom''bullets'

带有分页类型的字符串。可以是 'bullets''fraction''progressbar''custom'

verticalClass字符串'swiper-pagination-vertical'

在垂直 Swiper 中,设置为分页的 CSS 类名

分页方法

属性
swiper.bulletsHTMLElement[]

分页子弹 HTML 元素数组。要获取特定的幻灯片 HTMLElement,请使用 swiper.pagination.bullets[1]

swiper.elHTMLElement

分页容器元素的 HTMLElement

方法
swiper.destroy()

销毁分页

swiper.init()

初始化分页

swiper.render()

渲染分页布局

swiper.update()

更新分页状态(启用/禁用/活动)

分页事件

名称参数描述
paginationHide(swiper)

分页隐藏时触发事件

paginationRender(swiper, paginationEl)

分页渲染后触发事件

paginationShow(swiper)

分页显示时触发事件

paginationUpdate(swiper, paginationEl)

分页更新时触发事件

分页 CSS 自定义属性

 {
  --swiper-pagination-color: var(--swiper-theme-color);
  --swiper-pagination-left: auto;
  --swiper-pagination-right: 8px;
  --swiper-pagination-bottom: 8px;
  --swiper-pagination-top: auto;
  --swiper-pagination-fraction-color: inherit;
  --swiper-pagination-progressbar-bg-color: rgba(0, 0, 0, 0.25);
  --swiper-pagination-progressbar-size: 4px;
  --swiper-pagination-bullet-size: 8px;
  --swiper-pagination-bullet-width: 8px;
  --swiper-pagination-bullet-height: 8px;
  --swiper-pagination-bullet-inactive-color: #000;
  --swiper-pagination-bullet-inactive-opacity: 0.2;
  --swiper-pagination-bullet-opacity: 1;
  --swiper-pagination-bullet-horizontal-gap: 4px;
  --swiper-pagination-bullet-vertical-gap: 6px;
}

滚动条

滚动条参数

名称类型默认值描述
dragClass字符串'swiper-scrollbar-drag'

滚动条可拖动元素的 CSS 类

dragSize数字 | 'auto''auto'

滚动条可拖动元素的大小(以 px 为单位)

draggable布尔值false

设置为 true 以启用滚动条可拖动,从而允许您控制滑块位置

el任意null

带有 CSS 选择器或 HTML 元素的滚动条容器的字符串或 HTML 元素。

enabled布尔值

用于断点以启用/禁用某些断点上的滚动条的布尔属性

hide布尔值true

用户交互后自动隐藏滚动条

horizontalClass字符串'swiper-scrollbar-horizontal'

在水平 Swiper 中,设置为滚动条的 CSS 类名

lockClass字符串'swiper-scrollbar-lock'

滚动条元素禁用时,额外的 CSS 类

scrollbarDisabledClass字符串'swiper-scrollbar-disabled'

当滚动条被断点禁用时,添加到 swiper 容器和滚动条元素的 CSS 类名

snapOnRelease布尔值false

设置为 true 以在释放滚动条时将滑块位置捕捉到幻灯片

verticalClass字符串'swiper-scrollbar-vertical'

在垂直 Swiper 中,设置为滚动条的 CSS 类名

滚动条方法

属性
swiper.dragElHTMLElement

滚动条可拖动处理程序元素的 HTMLElement

swiper.elHTMLElement

滚动条容器元素的 HTMLElement

方法
swiper.destroy()

销毁滚动条

swiper.init()

初始化滚动条

swiper.setTranslate()

更新滚动条 translate

swiper.updateSize()

更新滚动条轨道和处理程序大小

滚动条事件

名称参数描述
scrollbarDragEnd(swiper, event)

可拖动滚动条拖动结束时触发事件

scrollbarDragMove(swiper, event)

可拖动滚动条拖动移动时触发事件

scrollbarDragStart(swiper, event)

可拖动滚动条拖动开始时触发事件

滚动条 CSS 自定义属性

 {
  --swiper-scrollbar-border-radius: 10px;
  --swiper-scrollbar-top: auto;
  --swiper-scrollbar-bottom: 4px;
  --swiper-scrollbar-left: auto;
  --swiper-scrollbar-right: 4px;
  --swiper-scrollbar-sides-offset: 1%;
  --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1);
  --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5);
  --swiper-scrollbar-size: 4px;
}

自动播放

自动播放参数

名称类型默认值描述
delay数字3000

过渡之间的延迟(以毫秒为单位)。如果未指定此参数,则将禁用自动播放

如果您需要为特定幻灯片指定不同的延迟,可以通过在幻灯片上使用 data-swiper-autoplay(以毫秒为单位)属性来完成。

<!-- hold this slide for 2 seconds -->
<div class="swiper-slide" data-swiper-autoplay="2000">
disableOnInteraction布尔值true

设置为 false 后,用户交互(滑动)后自动播放不会被禁用,每次交互后都会重新启动

pauseOnMouseEnter布尔值false

启用后,自动播放将在指针(鼠标)进入 Swiper 容器时暂停。

reverseDirection布尔值false

启用反向自动播放

stopOnLastSlide布尔值false

启用此参数后,当自动播放到达最后一张幻灯片时将停止(在循环模式下无效)

waitForTransition布尔值true

启用后,自动播放将等待包装器过渡继续。在使用虚拟转换时可以禁用,此时您的滑块可能没有转换

自动播放方法

属性
swiper.paused布尔值

自动播放是否暂停

swiper.running布尔值

自动播放是否启用并运行

swiper.timeLeft数字

如果自动播放暂停,它包含在过渡到下一张幻灯片之前剩余的时间(以毫秒为单位)

方法
swiper.pause()

暂停自动播放

swiper.resume()

恢复自动播放

swiper.start()

开始自动播放

swiper.stop()

停止自动播放

自动播放事件

名称参数描述
autoplay(swiper)

使用自动播放更改幻灯片时触发事件

autoplayPause(swiper)

自动播放暂停时触发事件

autoplayResume(swiper)

自动播放恢复时触发事件

autoplayStart(swiper)

自动播放开始时触发事件

autoplayStop(swiper)

自动播放停止时触发事件

autoplayTimeLeft(swiper, timeLeft, percentage)

在自动播放启用时持续触发事件。它包含在过渡到下一张幻灯片之前剩余的时间(以毫秒为单位)以及该时间相对于自动播放延迟的百分比

自由模式

自由模式参数

名称类型默认值描述
enabled布尔值false

自由模式是否启用

minimumVelocity数字0.02

触发自由模式动量所需的最小 touchmove 速度

momentum布尔值true

如果启用,则在您释放滑块后,滑块将继续移动一段时间

momentumBounce布尔值true

如果您想禁用自由模式下的动量反弹,请设置为 false

momentumBounceRatio数字1

值越高,产生更大的动量反弹效果

momentumRatio数字1

值越高,在您释放滑块后,产生更大的动量距离

momentumVelocityRatio数字1

值越高,在您释放滑块后,产生更大的动量速度

sticky布尔值false

设置为启用,以在自由模式下启用幻灯片位置的吸附

网格

网格参数

名称类型默认值描述
fill'row' | 'column''column'

可以是 'column''row'。定义幻灯片应如何填充行,按列或按行

如果与循环模式一起使用,请确保幻灯片数量与循环模式要求中指定的一致,或者启用 loopAddBlankSlides 参数

rows数字1

多行布局的幻灯片行数

操作

Manipulation 模块添加了有用的 Swiper 方法来操作幻灯片。仅与 Swiper Core 版本一起使用才有意义,不适用于 Swiper React 或 Vue。

操作方法

方法
swiper.addSlide(index, slides)

在所需索引处添加新幻灯片。幻灯片可以是 HTMLElement 或带有新幻灯片的 HTML 字符串,也可以是包含此类幻灯片的数组,例如

addSlide(1, '<div class="swiper-slide">Slide 10"</div>')

addSlide(1, [
 '<div class="swiper-slide">Slide 10"</div>',
 '<div class="swiper-slide">Slide 11"</div>'
]);
swiper.appendSlide(slides)

在末尾添加新幻灯片。幻灯片可以是 HTMLElement 或带有新幻灯片的 HTML 字符串,也可以是包含此类幻灯片的数组,例如

appendSlide('<div class="swiper-slide">Slide 10"</div>')

appendSlide([
 '<div class="swiper-slide">Slide 10"</div>',
 '<div class="swiper-slide">Slide 11"</div>'
]);
swiper.prependSlide(slides)

在开头添加新幻灯片。幻灯片可以是 HTMLElement 或带有新幻灯片的 HTML 字符串,也可以是包含此类幻灯片的数组,例如

prependSlide('<div class="swiper-slide">Slide 0"</div>')

prependSlide([
 '<div class="swiper-slide">Slide 1"</div>',
 '<div class="swiper-slide">Slide 2"</div>'
]);
swiper.removeAllSlides()

移除所有幻灯片

swiper.removeSlide(slideIndex)

删除选定的幻灯片。slideIndex 可以是要删除的幻灯片索引的数字或索引数组。

removeSlide(0); // remove first slide
removeSlide([0, 1]); // remove first and second slides
removeAllSlides();    // Remove all slides

视差

Swiper 支持 swiper/slides 嵌套元素的视差过渡效果。支持两种类型的视差元素

  • swiper 的直接子元素。这些元素的视差效果将取决于滑块的总进度。适用于视差背景
  • 幻灯片子元素。这些元素的视差效果将取决于幻灯片进度

要启用视差效果,您需要使用 `parallax:true` 参数初始化 Swiper,并为所需元素添加以下(或混合)属性之一

  • data-swiper-parallax - 启用 transform-translate 视差过渡。此属性可以接受
    • number - 以像素为单位的值(如上例中的标题、副标题),用于根据进度移动元素。在这种情况下,此元素将根据幻灯片位置(下一张或上一张)移动 ± 此像素值
    • percentage - (如“parallax-bg”)根据进度及其大小移动元素。在这种情况下,此元素将根据幻灯片位置(下一张或上一张)移动其大小(水平方向为宽度,垂直方向为高度)的 ± 此百分比。因此,如果元素宽度为 400px 且您指定 data-swiper-parallax="50%",则它将移动 ± 200px
  • data-swiper-parallax-x - 相同,但用于 x 轴方向
  • data-swiper-parallax-y - 相同,但用于 y 轴方向
  • data-swiper-parallax-scale - 当视差元素处于“非活动”(不在活动幻灯片上)状态时的缩放比例
  • data-swiper-parallax-opacity - 当视差元素处于“非活动”(不在活动幻灯片上)状态时的不透明度
  • data-swiper-parallax-duration - 视差元素的自定义过渡持续时间
<div class="swiper">
  <!-- Parallax background element -->
  <div
    class="parallax-bg"
    style="background-image:url(path/to/image.jpg)"
    data-swiper-parallax="-23%"
  ></div>
  <div class="swiper-wrapper">
    <div class="swiper-slide">
      <!-- Each slide has parallax title -->
      <div class="title" data-swiper-parallax="-100">Slide 1</div>
      <!-- Parallax subtitle -->
      <div class="subtitle" data-swiper-parallax="-200">Subtitle</div>
      <!-- And parallax text with custom transition duration -->
      <div
        class="text"
        data-swiper-parallax="-300"
        data-swiper-parallax-duration="600"
      >
        <p>Lorem ipsum dolor sit amet, ...</p>
      </div>
      <!-- Opacity parallax -->
      <div data-swiper-parallax-opacity="0.5">I will change opacity</div>
      <!-- Scale parallax -->
      <div data-swiper-parallax-scale="0.15">I will change scale</div>
    </div>
    ...
  </div>
</div>

视差参数

名称类型默认值描述
enabled布尔值false

如果您想在滑块中使用“视差”元素,请启用此项

懒加载

自版本 9 以来,Swiper 没有特定的懒加载 API,因为它依赖于原生浏览器懒加载功能。要使用懒加载,我们只需在图像上设置 loading="lazy" 并添加预加载器元素即可

<div class="swiper">
  <div class="swiper-wrapper">
    <!-- Lazy image -->
    <div class="swiper-slide">
      <img src="path/to/picture-1.jpg" loading="lazy" />
      <div class="swiper-lazy-preloader"></div>
    </div>

    <!-- Lazy image with srcset -->
    <div class="swiper-slide">
      <img
        src="path/to/logo-small.png"
        srcset="path/to/logo-large.png 2x"
        loading="lazy"
      />
      <div class="swiper-lazy-preloader"></div>
    </div>
  </div>
</div>

如你所见

  • 懒加载图像必须具有 loading="lazy" 属性
  • 在幻灯片中添加动画预加载器旋转器,图像加载后会自动删除
<div class="swiper-lazy-preloader"></div>

或者用于深色布局的白色预加载器

<div class="swiper-lazy-preloader swiper-lazy-preloader-white"></div>

淡入淡出效果

请确保将 effect 参数设置为 'fade' 以使其生效。

请注意,应将 crossFade 设置为 true 以避免看到后面或下面的内容。

淡入淡出效果参数

名称类型默认值描述
crossFade布尔值false

启用幻灯片交叉淡入淡出

Coverflow 效果

请确保将 effect 参数设置为 'coverflow' 以使其生效。

Coverflow 效果参数

名称类型默认值描述
depth数字100

深度偏移量(以像素为单位,幻灯片在 Z 轴上平移)

modifier数字1

效果乘数

rotate数字50

幻灯片旋转角度(以度为单位)

scale数字1

幻灯片缩放效果

slideShadows布尔值true

启用幻灯片阴影

stretch数字 | 0

拉伸幻灯片之间的空间

  • 数字被解释为像素(例如,20 表示 20 像素)。
  • 带百分比的字符串(例如,"50%")。

翻转效果

请确保将 effect 参数设置为 'flip' 以使其生效。

翻转效果参数

名称类型默认值描述
limitRotation布尔值true

限制边缘幻灯片旋转

slideShadows布尔值true

启用幻灯片阴影

立方体效果

请确保将 effect 参数设置为 'cube' 以使其生效。

立方体效果参数

名称类型默认值描述
shadow布尔值true

启用主滑块阴影

shadowOffset数字20

主阴影偏移量(以像素为单位)

shadowScale数字0.94

主阴影缩放比例

slideShadows布尔值true

启用幻灯片阴影

卡片效果

请确保将 effect 参数设置为 'cards' 以使其生效。

卡片效果参数

名称类型默认值描述
perSlideOffset数字8

每张幻灯片的偏移距离(以像素为单位)

perSlideRotate数字2

每张幻灯片的旋转角度(以度为单位)

rotate布尔值true

启用卡片旋转

slideShadows布尔值true

启用幻灯片阴影

创意效果

请确保将 effect 参数设置为 'creative' 以使其生效。

创意效果参数

名称类型默认值描述
limitProgress数字1

将进度/偏移量限制在侧边幻灯片的数量。如果为 1,则 prev/next 之后的所有幻灯片将具有相同的状态。如果为 2,则活动幻灯片前后第 2 张之后的所有幻灯片将具有相同的状态,依此类推。

nextCreativeEffectTransform

下一张幻灯片变换。

{
  // Array with translate X, Y and Z values
  translate: (string | number)[];
  // Array with rotate X, Y and Z values (in deg)
  rotate?: number[];
  // Slide opacity
  opacity?: number;
  // Slide scale
  scale?: number;
  // Enables slide shadow
  shadow?: boolean;
  // Transform origin, e.g. `left bottom`
  origin?: string;
}
perspective布尔值true

如果您的自定义变换需要 3D 变换(translateZrotateXrotateY),请启用此参数

prevCreativeEffectTransform

上一张幻灯片变换。接受以下类型的对象

{
  // Array with translate X, Y and Z values
  translate: (string | number)[];
  // Array with rotate X, Y and Z values (in deg)
  rotate?: number[];
  // Slide opacity
  opacity?: number;
  // Slide scale
  scale?: number;
  // Enables slide shadow
  shadow?: boolean;
  // Transform origin, e.g. `left bottom`
  origin?: string;
}
progressMultiplier数字1

允许乘以幻灯片变换和不透明度。

shadowPerProgress布尔值false

根据 limitProgress 拆分每张幻灯片的阴影“不透明度”(仅当启用变换阴影时)。例如,设置 limitProgress: 2 并启用 shadowPerProgress,将设置活动幻灯片旁边的两张幻灯片的阴影不透明度为 0.51。禁用此参数后,除了活动幻灯片之外的所有幻灯片都将具有不透明度为 1 的阴影

缩略图

除了 Controller 组件之外,Swiper 还提供了 Thumbs 组件,它旨在以比用于同步两个 Swiper 的 Controller 更正确的方式与额外的缩略图 Swiper 配合使用。

缩略图参数

名称类型默认值描述
autoScrollOffset数字0

允许设置当活动缩略图从边缘移动到何处时,它应该自动滚动缩略图。例如,如果设置为 1 并且最后一个可见缩略图被激活(距离边缘 1),它将自动滚动缩略图

multipleActiveThumbs布尔值true

启用后,多个缩略图幻灯片可能会被激活

slideThumbActiveClass字符串'swiper-slide-thumb-active'

将添加到激活的缩略图 Swiper 幻灯片的额外类

swiper任意null

用作缩略图的 Swiper 实例或包含 Swiper 参数的对象以初始化缩略图 Swiper

thumbsContainerClass字符串'swiper-thumbs'

将添加到缩略图 Swiper 的额外类

缩略图方法

属性
swiper.swiper任意

缩略图 Swiper 的 Swiper 实例

方法
swiper.init()

初始化缩略图

swiper.update(initial)

更新缩略图

缩放

Swiper 支持图像缩放功能(类似于您在 iOS 上浏览单张照片时看到的功能),您可以通过捏合手势或双击来放大/缩小图像。在这种情况下,需要额外的布局

<div class="swiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide">
      <div class="swiper-zoom-container">
        <img src="path/to/image1.jpg" />
      </div>
    </div>
    <div class="swiper-slide">
      <div class="swiper-zoom-container">
        <img src="path/to/image2.jpg" />
      </div>
    </div>
    <div class="swiper-slide">Plain slide with text</div>
    <div class="swiper-slide">
      <!-- Override maxRatio parameter -->
      <div class="swiper-zoom-container" data-swiper-zoom="5">
        <img src="path/to/image1.jpg" />
      </div>
    </div>
  </div>
</div>
  • 所有“可缩放”图像都应包装在带有 swiper-zoom-container 类的 div 中。
  • 默认情况下,它期望缩放 imgpicturecanvas 元素之一。如果您想在其他自定义元素上进行缩放,只需将 swiper-zoom-target 类添加到该元素。例如
    <div class="swiper">
      <div class="swiper-wrapper">
        <div class="swiper-slide">
          <div class="swiper-zoom-container">
            <!-- custom zoomable element -->
            <div
              class="swiper-zoom-target"
              style="background-image: url(...)"
            ></div>
          </div>
        </div>
      </div>
    </div>
    
  • 您可以通过在缩放容器上使用 data-swiper-zoom 属性来覆盖特定幻灯片的 maxRatio 参数。

缩放参数

名称类型默认值描述
containerClass字符串'swiper-zoom-container'

缩放容器的 CSS 类名

limitToOriginalSize布尔值false

设置为 true 时,图像将不会超过其原始大小的 100% 缩放

maxRatio数字3

最大图像缩放乘数

minRatio数字1

最小图像缩放乘数

panOnMouseMove布尔值false

设置为 true 时,缩放的图像在鼠标移过图像时会自动平移

toggle布尔值true

通过幻灯片双击启用/禁用缩放

zoomedSlideClass字符串'swiper-slide-zoomed'

缩放容器的 CSS 类名

缩放方法

属性
swiper.enabled布尔值

缩放模块是否已启用

swiper.scale数字

当前图像缩放比例

方法
swiper.disable()

禁用缩放模块

swiper.enable()

启用缩放模块

swiper.in(ratio)

放大当前活动幻灯片的图像。可选地接受自定义缩放比例

swiper.out()

缩小当前活动幻灯片的图像

swiper.toggle(event)

切换当前活动幻灯片的图像缩放

缩放事件

名称参数描述
zoomChange(swiper, scale, imageEl, slideEl)

缩放更改时将触发事件

键盘控制

键盘控制参数

名称类型默认值描述
enabled布尔值false

设置为 true 以启用键盘控制

onlyInViewport布尔值true

启用后,它将控制当前在视口中的滑块

pageUpDown布尔值true

启用后,它将启用通过 Page Up 和 Page Down 键进行键盘导航

键盘控制方法

属性
swiper.enabled布尔值

键盘控制是否已启用

方法
swiper.disable()

禁用键盘控制

swiper.enable()

启用键盘控制

键盘事件

名称参数描述
keyPress(swiper, keyCode)

按下按键时将触发事件

鼠标滚轮控制

鼠标滚轮控制参数

名称类型默认值描述
enabled布尔值false

设置为 true 以启用鼠标滚轮控制

eventsTarget任意'container'

接受鼠标滚轮事件的容器的 CSS 选择器字符串或 HTML 元素。默认情况下它是 swiper

forceToAxis布尔值false

设置为 true 以强制鼠标滚轮滑动到轴。因此,在水平模式下,鼠标滚轮将仅与水平鼠标滚轮滚动一起工作,在垂直模式下仅与垂直滚动一起工作。

invert布尔值false

设置为 true 以反转滑动方向

noMousewheelClass字符串'swiper-no-mousewheel'

具有此类的元素上的滚动将被忽略

releaseOnEdges布尔值false

设置为 true 后,当 Swiper 处于边缘位置(开始或结束)时,Swiper 将释放鼠标滚轮事件并允许页面滚动

sensitivity数字1

鼠标滚轮数据的乘数,允许调整鼠标滚轮灵敏度

thresholdDeltanull | 数字null

触发 Swiper 幻灯片更改的最小鼠标滚轮滚动增量

thresholdTimenull | 数字null

触发 Swiper 幻灯片更改的最小鼠标滚轮滚动时间增量(以毫秒为单位)

鼠标滚轮控制方法

属性
swiper.enabled布尔值

鼠标滚轮控制是否已启用

方法
swiper.disable()

禁用鼠标滚轮控制

swiper.enable()

启用鼠标滚轮控制

鼠标滚轮事件

名称参数描述
scroll(swiper, event)

鼠标滚轮滚动时将触发事件

虚拟 slide

虚拟幻灯片模块允许在 DOM 中仅保留所需数量的幻灯片。如果您有大量幻灯片,特别是包含重量级 DOM 树或图像的幻灯片,这在性能和内存方面非常有用。

请注意,根据虚拟幻灯片实现,它不适用于 Grid 模块和 slidesPerView: 'auto'

虚拟幻灯片参数

名称类型默认值描述
addSlidesAfter数字0

增加活动幻灯片后预渲染幻灯片的数量

addSlidesBefore数字0

增加活动幻灯片前预渲染幻灯片的数量

缓存布尔值true

启用渲染幻灯片 HTML 元素的 DOM 缓存。一旦它们被渲染,它们将被保存到缓存中并从中重用。

enabled布尔值false

虚拟幻灯片是否已启用

renderExternalfunction(data)

用于外部渲染的函数(例如,使用其他库处理 DOM 操作和状态,如 React.js 或 Vue.js)。它接受一个包含以下属性的 data 对象作为参数

  • offset - 幻灯片左/上偏移量(以像素为单位)
  • from - 需要渲染的第一张幻灯片的索引
  • to - 需要渲染的最后一张幻灯片的索引
  • slides - 包含要渲染的幻灯片项的数组
renderExternalUpdate布尔值true

启用后(默认),它将在调用 renderExternal 后立即更新 Swiper 布局。当与异步渲染的渲染库一起使用时,禁用并手动更新 Swiper 会很有用

renderSlidefunction(slide, index)

渲染幻灯片的函数。它接受 slides 数组的当前幻灯片项和当前幻灯片的索引号作为参数。函数必须返回 Swiper 幻灯片的外层 HTML 或幻灯片 HTML 元素。

幻灯片T[][]

包含幻灯片的数组

slidesPerViewAutoSlideSize数字320

slidesPerView: auto 的幻灯片大小(以像素为单位)

虚拟幻灯片方法

属性
swiper.cache对象

包含缓存幻灯片 HTML 元素的对象

swiper.from数字

第一张渲染幻灯片的索引

swiper.slidesT[]

通过 virtual.slides 参数传递的幻灯片项数组

swiper.to数字

最后一张渲染幻灯片的索引

方法
swiper.appendSlide(slide)

追加幻灯片。slides 可以是单个幻灯片项或包含此类幻灯片的数组。

仅适用于核心版本(在 React 和 Vue 中应通过修改幻灯片数组/数据/源来完成)

swiper.prependSlide(slide)

前置幻灯片。slides 可以是单个幻灯片项或包含此类幻灯片的数组。

仅适用于核心版本(在 React 和 Vue 中应通过修改幻灯片数组/数据/源来完成)

swiper.removeAllSlides()

移除所有幻灯片

仅适用于核心版本(在 React 和 Vue 中应通过修改幻灯片数组/数据/源来完成)

swiper.removeSlide(slideIndexes)

删除特定幻灯片或多张幻灯片。slideIndexes 可以是带有幻灯片索引的数字或包含索引的数组。

仅适用于核心版本(在 React 和 Vue 中应通过修改幻灯片数组/数据/源来完成)

swiper.update(force)

更新虚拟幻灯片状态

虚拟幻灯片 DOM

自版本 9 以来,Swiper 虚拟幻灯片可以与最初在 DOM 中渲染的幻灯片一起使用。初始化时,它会从 DOM 中删除它们,缓存,然后重新使用所需的幻灯片

<div class="swiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide">Slide 1</div>
    <div class="swiper-slide">Slide 2</div>
    ...
    <div class="swiper-slide">Slide 100</div>
  </div>
</div>
<script>
  const swiper = new Swiper('.swiper', {
    virtual: {
      enabled: true,
    },
  });
</script>

哈希导航

哈希导航旨在提供指向特定幻灯片的链接,允许加载打开特定幻灯片的页面。

要使其工作,您需要通过传递 hashNavigation:true 参数并在 data-hash 属性中添加幻灯片哈希来启用它

<div class="swiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide" data-hash="slide1">Slide 1</div>
    <div class="swiper-slide" data-hash="slide2">Slide 2</div>
    <div class="swiper-slide" data-hash="slide3">Slide 3</div>
    <div class="swiper-slide" data-hash="slide4">Slide 4</div>
    <div class="swiper-slide" data-hash="slide5">Slide 5</div>
    ...
  </div>
</div>
const swiper = new Swiper('.swiper', {
  //enable hash navigation
  hashNavigation: true,
});

哈希导航参数

名称类型默认值描述
getSlideIndexfunction(swiper, hash)

设计用于虚拟幻灯片,当无法通过哈希在 DOM 中找到幻灯片时(例如,尚未渲染)

replaceState布尔值false

除了哈希导航之外,还用于将当前 URL 状态替换为新状态,而不是将其添加到历史记录中

watchState布尔值false

设置为 true 以启用通过浏览器历史记录或直接在文档位置设置哈希来导航幻灯片(当哈希导航启用时)

哈希导航事件

名称参数描述
hashChange(swiper)

窗口哈希更改时将触发事件

hashSet(swiper)

当 Swiper 更新哈希时将触发事件

历史导航

历史导航参数

名称类型默认值描述
enabled布尔值false

启用历史记录插件。

keepQuery布尔值false

更改浏览器 URL 时保留查询参数。

key字符串'slides'

幻灯片的 URL 键

replaceState布尔值false

除了哈希导航或历史记录之外,还用于将当前 URL 状态替换为新状态,而不是将其添加到历史记录中

root字符串''

Swiper 页面根目录,当您在非根网站页面上使用 Swiper 历史模式时很有用。例如可以是 https://my-website.com/https://my-website.com/subpage//subpage/

控制器

控制器参数

名称类型默认值描述
by'slide' | 'container''slide'

定义了如何控制另一个滑块:逐张幻灯片(考虑到另一个滑块的网格)或取决于所有幻灯片/容器(取决于滑块总百分比)。

control任意

在此处传递另一个 Swiper 实例或包含应由当前 Swiper 控制的 Swiper 实例的数组。也接受 Swiper 元素的 CSS 选择器字符串或 Swiper 元素的 HTMLElement

inverse布尔值false

设置为 true 后,控制将反向进行

控制器方法

属性
swiper.control任意

在此处传递另一个 Swiper 实例或包含应由当前 Swiper 控制的 Swiper 实例的数组

无障碍性 (a11y)

无障碍参数

名称类型默认值描述
containerMessagenull | 字符串null

外部 Swiper 容器的屏幕阅读器消息

containerRolenull | 字符串null

要在 Swiper 容器上设置的“role”属性值

containerRoleDescriptionMessagenull | 字符串null

屏幕阅读器描述外部 Swiper 容器角色的消息

enabled布尔值true

启用 A11y

firstSlideMessage字符串'这是第一张幻灯片'

当 Swiper 处于第一张幻灯片时,上一张按钮的屏幕阅读器消息

idnull | 字符串 | 数字null

要在 swiper-wrapper 上设置的 id 属性值。如果为 null,将自动生成

itemRoleDescriptionMessagenull | 字符串null

屏幕阅读器描述幻灯片元素角色的消息

lastSlideMessage字符串'这是最后一张幻灯片'

当 Swiper 处于最后一张幻灯片时,下一张按钮的屏幕阅读器消息

nextSlideMessage字符串'下一张幻灯片'

下一张按钮的屏幕阅读器消息

notificationClass字符串'swiper-notification'

A11y 通知器的 CSS 类名

paginationBulletMessage字符串'转到幻灯片{{index}}'

单个分页子弹的屏幕阅读器消息

prevSlideMessage字符串'上一张幻灯片'

上一张按钮的屏幕阅读器消息

scrollOnFocus布尔值true

启用滚动到已聚焦的幻灯片

slideLabelMessage字符串'{{index}} / {{slidesLength}}'

屏幕阅读器描述幻灯片元素标签的消息

slideRole字符串'group'

Swiper 幻灯片 role 属性的值

wrapperLiveRegion布尔值true

swiper-wrapper 是否应应用 aria-live 属性。如果为 true,当自动播放启用时,值为 off,否则为 polite

自定义构建

您有两种制作自定义 Swiper 版本的方法。

使用 JS 模块

如果您的项目中使用支持 JS 模块的打包器,则可以仅导入您需要的模块

// Import Swiper and modules
import Swiper from 'swiper';
import { Navigation, Pagination, Scrollbar } from 'swiper/modules';

// Now you can use Swiper
const swiper = new Swiper('.swiper', {
  // Install modules
  modules: [Navigation, Pagination, Scrollbar],
  speed: 500,
  navigation: {
    nextEl: '.swiper-button-next',
    prevEl: '.swiper-button-prev',
  },
  // ...
});

导出以下模块

  • Virtual - 虚拟幻灯片模块
  • Keyboard - 键盘控制模块
  • Mousewheel - 鼠标滚轮控制模块
  • Navigation - 导航模块
  • Pagination - 分页模块
  • Scrollbar - 滚动条模块
  • Parallax - 视差模块
  • FreeMode - 自由模式模块
  • Grid - 网格模块
  • Manipulation - 幻灯片操作模块(仅适用于核心版本)
  • Zoom - 缩放模块
  • Controller - 控制器模块
  • A11y - 无障碍模块
  • History - 历史导航模块
  • HashNavigation - 哈希导航模块
  • Autoplay - 自动播放模块
  • EffectFade - 淡入淡出效果模块
  • EffectCube - 立方体效果模块
  • EffectFlip - 翻转效果模块
  • EffectCoverflow - Coverflow 效果模块
  • EffectCards - 卡片效果模块
  • EffectCreative - 创意效果模块
  • Thumbs - 缩略图模块

使用构建脚本

Swiper 附带一个 Gulp 构建器,允许构建自定义库版本,您可以在其中仅包含所需的模块。我们需要以下内容

  1. Swiper GitHub 仓库 下载并解压到本地文件夹

  2. 安装 Node.js(如果尚未安装)

  3. 现在,我们需要安装所需的依赖项。进入已下载并解压的 Swiper 仓库文件夹并在终端中执行

    npm install
    
  4. 打开 scripts/build-config.js 文件

    module.exports = {
      // remove modules you don't need
      modules: [
        'virtual',
        'keyboard',
        'mousewheel',
        'navigation',
        'pagination',
        'scrollbar',
        'parallax',
        'zoom',
        'controller',
        'a11y',
        'history',
        'hash-navigation',
        'autoplay',
        'thumbs',
        'free-mode',
        'grid',
        'manipulation',
        'effect-fade',
        'effect-cube',
        'effect-flip',
        'effect-coverflow',
        'effect-creative',
        'effect-cards',
      ],
    };
    
  5. 现在,我们已准备好构建自定义版本的 Swiper

    npm run build:prod
    
  6. 就是这样。生成的 CSS 和 JS 文件及其压缩版本将在 dist/ 文件夹中提供。

TypeScript 定义

Swiper 是完全类型化的,它导出 SwiperSwiperOptions 类型

// main.ts
import Swiper from 'swiper';
import { SwiperOptions } from 'swiper/types';

const swiperParams: SwiperOptions = {
  slidesPerView: 3,
  spaceBetween: 50,
};

const swiper = new Swiper('.swiper', swiperParams);

您还可以查看自动生成的 TypeScript 定义浏览器,了解所有类型、选项、属性和方法。