🎄🎅 节日促销:高达 50% 的折扣 UI Initiative, Swiper Studio 以及 t0ggles 🎅🎄

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、Less 和 SCSS 样式集

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 模块所需的样式

Less 样式

Less 样式是核心版本和模块的单独样式(包导入)

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

SCSS 样式

SCSS 样式也是核心版本和模块的单独样式(包导入)

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

初始化 Swiper

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

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

  • swiperContainer - HTMLElement 或 swiper 容器 HTML 元素的字符串(带有 CSS 选择器)。必需。
  • parameters - 对象 - 带有 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,则切换幻灯片的唯一方法是使用 slidePrev 或 slideNext 等外部 API 函数

autoHeight布尔值false

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

autoplay任意

带有 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-effect 参数的对象

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任意

带有创意效果参数的对象

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任意

带有立方体效果参数的对象

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

从屏幕左边缘释放触摸事件以在应用程序中滑动返回的区域(以像素为单位)

effect字符串'slide'

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

enabled布尔值true

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

eventsPrefix字符串`swiper`

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

fadeEffect任意

带有淡入淡出效果参数的对象

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

带有翻转效果参数的对象

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 高度(以像素为单位)。参数允许强制设置 Swiper 高度。仅当您在 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[]

将文本样式注入阴影 DOM。仅用于 Swiper 元素

injectStylesUrlsstring[]

将样式 <link> 注入阴影 DOM。仅用于 Swiper 元素

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

如果您使用网格或 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 以正确拦截触摸事件。仅在与父项使用相同方向的滑块上使用

noSwiping布尔值true

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

noSwipingClass字符串'swiper-no-swiping'

指定 noSwiping 的元素 CSS 类

noSwipingSelector字符串

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

normalizeSlideIndex布尔值true

规范化幻灯片索引。

observeParents布尔值false

如果还需要观察 Swiper 父元素的突变,则设置为 true

observeSlideChildren布尔值false

如果还需要观察 Swiper 幻灯片子元素的突变,则设置为 true

observer布尔值false

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

on对象

注册事件处理程序

onAny函数(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 初始化时触发过渡/幻灯片更改/开始/结束事件。如果您的 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

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

slidesOffsetBefore数字0

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

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

幻灯片之间的距离,单位为像素。

如果您将 “margin” CSS 属性应用于传入 “spaceBetween” 的 Swiper 中的元素,导航可能无法正常工作。

speed数字300

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

swipeHandler任意null

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

swiperElementNodeName字符串'SWIPER-CONTAINER'

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

threshold数字5

阈值,单位为像素。如果“触摸距离”低于此值,则滑块将不会移动

thumbs任意

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

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

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

touchEventsTarget'container' | 'wrapper''wrapper'

用于监听触摸事件的目标元素。可以是 'container'(在滑块上监听触摸事件)或 'wrapper'(在滑块包装器上监听触摸事件)

touchMoveStopPropagation布尔值false

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

touchRatio数字1

触摸比例

touchReleaseOnEdges布尔值false

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

touchStartForcePreventDefault布尔值false

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

touchStartPreventDefault布尔值true

如果禁用,则不会阻止 pointerdown 事件的默认行为

uniqueNavElements布尔值true

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

updateOnWindowResize布尔值true

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

urlnull | 字符串null

在服务器端渲染并启用历史记录时,检测活动幻灯片所必需

userAgentnull | 字符串null

userAgent 字符串。在服务器端渲染时,进行浏览器/设备检测所必需

virtual任意

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

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

启用此选项后,滑块将照常运行,但不会移动,也不会在包装器上设置实际的 translate 值。当您可能需要创建自定义幻灯片过渡时非常有用

watchOverflow布尔值true

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

watchSlidesProgress布尔值false

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

widthnull | 数字null

Swiper 宽度(以像素为单位)。此参数允许强制指定 Swiper 宽度。仅当您在隐藏状态下初始化 Swiper、在 SSR 和测试环境中进行正确的 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布尔值

如果滑块正在过渡中,则为 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.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()

获取滑块包装器 css3 变换 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 translate 进度(从 0 到 1)。其中 0 表示其在第一张幻灯片上的初始位置(偏移量),而 1 表示其在最后一张幻灯片上的最大位置(偏移量)

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

为滑块包装器设置自定义 css3 变换 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)

将滑块位置重置为当前活动幻灯片,持续时间等于 '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 的位置重置到最近的 slide/吸附点,持续时间等于“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 wrapper 的自定义 css3 transform 的 translate 值设置动画

  • translate - number - Translate 值(以像素为单位)
  • speed - number - 过渡持续时间(以毫秒为单位)
  • runCallbacks - boolean - 将其设置为 false(默认为 true)过渡将不会产生过渡事件
  • translateBounds - boolean - 将其设置为 false(默认为 true)过渡值可以超出最小和最大 translate
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)

在调整大小处理程序之前将触发事件

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)

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

touchStart(swiper, event)

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

transitionEnd(swiper)

在过渡之后将触发事件。

transitionStart(swiper)

在过渡开始时将触发事件。

unlock(swiper)

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

update(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 元素,在单击该元素后,该元素将用作“下一个”按钮

prevEl任意null

CSS 选择器字符串或 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'

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

dynamicBullets布尔值false

如果您使用带有大量幻灯片的分页符分页,则最好启用此项。因此,它将仅保持少数分页符同时可见。

dynamicMainBullets数字1

启用 dynamicBullets 时显示的主指示点数量。

el任意null

带有 CSS 选择器或 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 参数相反,即水平滑块方向使用垂直进度条,垂直滑块方向使用水平进度条。

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

分页进度条相反方向的 CSS 类名。

renderBulletfunction(index, className)

此参数允许完全自定义分页指示点,你需要在此处传递一个函数,该函数接收分页指示点的 index 编号和必需的元素类名 (className)。仅用于 'bullets' 分页类型。

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

此参数是 'custom' 分页类型所必需的,你需要指定其渲染方式。

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

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

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

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

const swiper = new Swiper('.swiper', {
  //...
  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'

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

draggable布尔值false

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

el任意null

带有 CSS 选择器或 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()

更新滚动条位移。

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

多行布局的幻灯片行数。

操作

操作模块为 Swiper 添加了有用的方法来操作幻灯片。它仅适用于 Swiper Core 版本,不适用于 Swiper React 或 Vue。

操作方法

方法
swiper.addSlide(index, slides)

在所需的索引处添加新的幻灯片。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)

在末尾添加新的幻灯片。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)

在开头添加新的幻灯片。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”)根据进度及其大小移动元素。在这种情况下,此类元素将根据幻灯片位置(下一张或上一张)在其大小的 ± 此百分比上移动(水平方向为宽度,垂直方向为高度)。因此,如果元素宽度为 400 像素,并且您指定了 data-swiper-parallax="50%",则它将移动 ± 200 像素
  • 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

幻灯片之间的拉伸空间(以像素为单位)

翻转效果

请务必将 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

缩略图

除了 控制器 组件外,Swiper 还附带了“缩略图”组件,该组件旨在比控制器更正确地与附加的缩略图滑块一起使用,控制器用于同步两个滑块。

缩略图参数

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

允许设置从哪个边缘的缩略图活动幻灯片开始自动移动滚动缩略图。例如,如果设置为 1,并且最后一个可见的缩略图将被激活(距离边缘 1 个),它将自动滚动缩略图

multipleActiveThumbs布尔值true

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

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

将添加到激活的缩略图滑块幻灯片的附加类

swiper任意null

用作缩略图的滑块的 Swiper 实例,或用于初始化缩略图滑块的 Swiper 参数的对象

thumbsContainerClass字符串'swiper-thumbs'

将添加到缩略图滑块的附加类

缩略图方法

属性
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 并且当滑块处于边缘位置(开始或结束)时,滑块将释放鼠标滚轮事件并允许页面滚动

sensitivity数字1

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

thresholdDeltanull | 数字null

触发滑块切换的最小鼠标滚轮滚动增量

thresholdTimenull | 数字null

触发滑块切换的最小鼠标滚轮滚动时间增量(以毫秒为单位)

鼠标滚轮控制方法

属性
swiper.enabled布尔值

是否启用鼠标滚轮控制

方法
swiper.disable()

禁用鼠标滚轮控制

swiper.enable()

启用鼠标滚轮控制

鼠标滚轮事件

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

在鼠标滚轮滚动时触发的事件

虚拟幻灯片

虚拟幻灯片模块允许仅在 DOM 中保留所需数量的幻灯片。 如果您有很多幻灯片,尤其是具有重量级 DOM 树或图像的幻灯片,则在性能和内存问题方面非常有用。

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

虚拟幻灯片参数

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

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

addSlidesBefore数字0

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

cache布尔值true

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

enabled布尔值false

是否启用虚拟幻灯片

renderExternalfunction(data)

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

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

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

renderSlidefunction(slide, index)

用于渲染幻灯片的函数。 作为参数,它接受 slides 数组的当前幻灯片项目和当前幻灯片的索引号。 函数必须返回滑块幻灯片的外部 HTML 或幻灯片 HTML 元素。

slidesT[][]

幻灯片数组

虚拟幻灯片方法

属性
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

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

watchState布尔值false

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

哈希导航事件

名称参数描述
hashChange(swiper)

当窗口哈希值更改时触发的事件

hashSet(swiper)

当滑块更新哈希值时触发的事件

历史记录导航

历史记录导航参数

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

启用历史记录插件。

keepQuery布尔值false

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

key字符串'slides'

幻灯片的 URL 键

replaceState布尔值false

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

root字符串''

滑块页面根目录,当您不在根网站页面上使用滑块历史记录模式时,指定此项很有用。 例如,可以是 https://my-website.com/https://my-website.com/subpage//subpage/

控制器

控制器参数

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

定义如何控制另一个滑块:逐个幻灯片(相对于其他滑块的网格)或取决于所有幻灯片/容器(取决于总滑块百分比)。

control任意

在此处传递另一个滑块实例或应由该滑块控制的滑块实例数组。 还接受带有滑块元素的 CSS 选择器的字符串或滑块元素的 HTMLElement

inverse布尔值false

设置为 true 并且控制方向将反向

控制器方法

属性
swiper.control任意

在此处传递另一个滑块实例或应由该滑块控制的滑块实例数组

辅助功能 (a11y)

辅助功能参数

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

外部滑块容器的屏幕阅读器消息

containerRolenull | 字符串null

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

containerRoleDescriptionMessagenull | 字符串null

用于描述外部滑块容器角色的屏幕阅读器消息

enabled布尔值true

启用 A11y

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

当滑块位于第一张幻灯片时,用于前一个按钮的屏幕阅读器消息

idnull | 字符串 | 数字null

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

itemRoleDescriptionMessagenull | 字符串null

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

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

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

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

为屏幕阅读器提供的“下一张”按钮的消息

notificationClass字符串'swiper-notification'

A11y 通知的 CSS 类名

paginationBulletMessage字符串'跳转到幻灯片{{索引}}'

为屏幕阅读器提供的单个分页圆点消息

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

为屏幕阅读器提供的“上一张”按钮的消息

scrollOnFocus布尔值true

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

slideLabelMessage字符串'{{索引}} / {{幻灯片长度}}'

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

slideRole字符串'group'

Swiper 幻灯片 role 属性的值

自定义构建

您有两种方法可以制作 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 - Hash 导航模块
  • 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 定义浏览器,以查看所有类型、选项、属性和方法。