<!-- 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 的 HTML 后,我们需要使用以下函数来初始化它
new Swiper(swiperContainer, parameters) - 使用选项初始化 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 参数的对象,或布尔值
| |
allowSlideNext | 布尔值 | true | 设置为 |
allowSlidePrev | 布尔值 | true | 设置为 |
allowTouchMove | 布尔值 | true | 如果为 |
autoHeight | 布尔值 | false | 设置为 |
autoplay | 任意 | 包含自动播放参数的对象,或布尔值
| |
breakpoints | 对象 | 允许为不同的响应断点(屏幕尺寸)设置不同的参数。并非所有参数都可以在断点中更改,只有那些不需要不同布局和逻辑的参数,例如
| |
breakpointsBase | 任意 | 'window' | 断点基准(测试版)。可以是 |
cardsEffect | 任意 | 包含 Cards 效果参数的对象
| |
centerInsufficientSlides | 布尔值 | false | 启用后,如果幻灯片数量少于 |
centeredSlides | 布尔值 | false | 如果为 |
centeredSlidesBounds | 布尔值 | false | 如果为 |
containerModifierClass | 字符串 | 'swiper-' | 可根据不同参数添加到 swiper 容器的修改器 CSS 类开头 |
controller | 任意 | 包含控制器参数的对象,或布尔值
| |
coverflowEffect | 任意 | 包含 Coverflow 效果参数的对象。
| |
createElements | 布尔值 | false | 启用后,Swiper 将自动用 swiper-wrapper 元素包装幻灯片,如果启用(使用各自的参数对象或布尔值 |
creativeEffect | 任意 | 包含 Creative 效果参数的对象
| |
cssMode | 布尔值 | false | 启用后,它将使用现代 CSS Scroll Snap API。它不支持 Swiper 的所有功能,但在简单配置中可能会带来更好的性能。 启用时不支持以下功能
如果您将其与其他效果,特别是 3D 效果一起使用,则需要将幻灯片内容包装在
|
cubeEffect | 任意 | 包含 Cube 效果参数的对象
| |
direction | 'horizontal' | 'vertical' | 'horizontal' | 可以是 |
edgeSwipeDetection | 字符串 | 布尔值 | false | 启用以在应用程序中释放 Swiper 事件以进行滑动返回工作。如果设置为 |
edgeSwipeThreshold | 数字 | 20 | 屏幕左边缘的区域(以 px 为单位),用于在应用程序中释放触摸事件以进行滑动返回 |
effect | | 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards' | 'slide' | 过渡效果。可以是 |
enabled | 布尔值 | true | Swiper 最初是否启用。当 Swiper 被禁用时,它将隐藏所有导航元素,并且不会响应任何事件和交互 |
eventsPrefix | 字符串 | `swiper` | Swiper Element(Web 组件)发出的所有 DOM 事件的事件名称前缀 |
fadeEffect | 任意 | 包含 Fade 效果参数的对象
| |
flipEffect | 任意 | 包含 Flip 效果参数的对象
| |
focusableElements | 字符串 | 'input, select, option, textarea, button, video, label' | 可聚焦元素的 CSS 选择器。如果这些元素“聚焦”,则在其上禁用滑动 |
followFinger | 布尔值 | true | 如果禁用,则滑块只会在您松开手指时动画,当您将手指按在上面时它不会移动 |
freeMode | 任意 | 启用自由模式功能。包含自由模式参数的对象,或布尔值
| |
grabCursor | 布尔值 | false | 此选项可能会稍微改善桌面可用性。如果为 |
grid | 任意 | 包含网格参数的对象,以启用“多行”滑块。
| |
hashNavigation | 任意 | 启用幻灯片的哈希 URL 导航。包含哈希导航参数的对象,或布尔值
| |
height | null | 数字 | null | Swiper 高度(以 px 为单位)。参数允许强制 Swiper 高度。仅当您在隐藏和 SSR 及测试环境中初始化 Swiper 以进行正确 Swiper 初始化时才有用
|
history | 任意 | 启用历史推送状态,其中每个幻灯片都将拥有自己的 URL。在此参数中,您必须指定主幻灯片 URL,例如 包含历史导航参数的对象,或布尔值
| |
init | 布尔值 | true | 当您创建实例时,Swiper 是否应自动初始化。如果禁用,则需要通过调用 |
initialSlide | 数字 | 0 | 初始幻灯片的索引号。 |
injectStyles | string[] | 将文本样式注入到 shadow DOM 中。仅用于 Swiper Element | |
injectStylesUrls | string[] | 将样式 | |
keyboard | 任意 | 启用使用键盘在幻灯片之间导航。包含键盘参数的对象,或布尔值
| |
lazyPreloadPrevNext | 数字 | 0 | 要预加载的下一个和上一个幻灯片数量。仅在使用延迟加载时适用。 |
lazyPreloaderClass | 字符串 | 'swiper-lazy-preloader' | 延迟预加载器的 CSS 类名 |
longSwipes | 布尔值 | true | 如果您想禁用长滑动,请设置为 |
longSwipesMs | 数字 | 300 | 在长滑动期间触发滑动到下一张/上一张幻灯片的最小持续时间(以毫秒为单位) |
longSwipesRatio | 数字 | 0.5 | 在长滑动期间触发滑动到下一张/上一张幻灯片的比率 |
loop | 布尔值 | false | 设置为 由于循环模式的工作原理(它将重新排列幻灯片),幻灯片总数必须
|
loopAddBlankSlides | 布尔值 | true | 如果您使用 Grid 或 |
loopAdditionalSlides | 数字 | 0 | 允许增加循环幻灯片的数量 |
loopPreventsSliding | 布尔值 | true | 如果启用,则在循环模式下,当滑块正在动画时,slideNext/Prev 将不起作用 |
maxBackfaceHiddenSlides | 数字 | 10 | 如果幻灯片总数小于此处指定的值,则 Swiper 将在幻灯片元素上启用
|
modules | any[] | 包含 Swiper 模块的数组
| |
mousewheel | 任意 | 启用使用鼠标滚轮在幻灯片之间导航。包含鼠标滚轮参数的对象,或布尔值
| |
navigation | 任意 | 包含导航参数的对象,或布尔值
| |
nested | 布尔值 | false | 在 Swiper 上设置为 |
noSwiping | 布尔值 | true | 启用/禁用在与 |
noSwipingClass | 字符串 | 'swiper-no-swiping' | 指定 |
noSwipingSelector | 字符串 | 可以代替 | |
normalizeSlideIndex | 布尔值 | true | 标准化幻灯片索引。 |
observeParents | 布尔值 | false | 如果您还需要监视 Swiper 父元素的 Mutation,请设置为 |
observeSlideChildren | 布尔值 | false | 如果您还需要监视 Swiper 子元素的 Mutation,请设置为 |
observer | 布尔值 | false | 设置为 |
on | 对象 | 注册事件处理程序 | |
onAny | function(handler) | 添加将在所有事件上触发的事件监听器
| |
oneWayMovement | 布尔值 | false | 启用后,无论滑动方向如何,都只向前滑动(单向)幻灯片 |
pagination | 任意 | 包含分页参数的对象,或布尔值
| |
parallax | 任意 | 包含视差参数的对象,或布尔值
| |
passiveListeners | 布尔值 | true | 在可能的情况下,默认将使用被动事件监听器来改善移动设备上的滚动性能。但是,如果您需要使用 |
preventClicks | 布尔值 | true | 设置为 |
preventClicksPropagation | 布尔值 | true | 设置为 |
preventInteractionOnTransition | 布尔值 | false | 启用后,在过渡期间不允许通过滑动或导航/分页按钮更改幻灯片 |
resistance | 布尔值 | true | 如果您想禁用弹性边界,请设置为 |
resistanceRatio | 数字 | 0.85 | 此选项允许您控制阻力比 |
resizeObserver | 布尔值 | true | 启用后,它将在 swiper 容器上使用 ResizeObserver(如果浏览器支持)来检测容器大小调整(而不是监视窗口大小调整) |
rewind | 布尔值 | false | 设置为
|
roundLengths | 布尔值 | false | 设置为 |
runCallbacksOnInit | 布尔值 | true | 在 swiper 初始化时触发 Transition/SlideChange/Start/End 事件。如果您的 initialSlide 不为 0,或者您使用循环模式,则在初始化时将触发此类事件 |
scrollbar | 任意 | 包含滚动条参数的对象,或布尔值
| |
setWrapperSize | 布尔值 | false | 启用此选项,插件将设置 swiper 包装器的宽度/高度等于所有幻灯片的总大小。主要应作为浏览器不支持 flexbox 布局的兼容性回退选项使用 |
shortSwipes | 布尔值 | true | 如果您想禁用短滑动,请设置为 |
simulateTouch | 布尔值 | true | 如果为 |
slideActiveClass | 字符串 | 'swiper-slide-active' | 当前活动幻灯片的 CSS 类名
|
slideBlankClass | 字符串 | 'swiper-slide-blank' | 由循环模式添加的空白幻灯片的 CSS 类名(当
|
slideClass | 字符串 | 'swiper-slide' | 幻灯片的 CSS 类名
|
slideFullyVisibleClass | 字符串 | 'swiper-slide-fully-visible' | 完全(当整个幻灯片在视口中时)可见幻灯片的 CSS 类名
|
slideNextClass | 字符串 | 'swiper-slide-next' | 当前活动幻灯片之后紧邻的幻灯片的 CSS 类名
|
slidePrevClass | 字符串 | 'swiper-slide-prev' | 当前活动幻灯片之前紧邻的幻灯片的 CSS 类名
|
slideToClickedSlide | 布尔值 | false | 设置为 |
slideVisibleClass | 字符串 | 'swiper-slide-visible' | 当前/部分可见幻灯片的 CSS 类名
|
slidesOffsetAfter | 数字 | 0 | 在容器末尾(所有幻灯片之后)添加(以 px 为单位)额外的幻灯片偏移 |
slidesOffsetBefore | 数字 | 0 | 在容器开头(所有幻灯片之前)添加(以 px 为单位)额外的幻灯片偏移 |
slidesPerGroup | 数字 | 1 | 设置幻灯片数量以定义和启用组滑动。与 slidesPerView > 1 一起使用时很有用 |
slidesPerGroupAuto | 布尔值 | false | 此参数仅适用于 |
slidesPerGroupSkip | 数字 | 0 | 该参数的工作方式如下:如果 如果 |
slidesPerView | 数字 | 'auto' | 1 | 每视图幻灯片数量(在滑块容器上同时可见的幻灯片)。
|
spaceBetween | 字符串 | 数字 | 0 | 幻灯片之间的距离(以 px 为单位)。
|
speed | 数字 | 300 | 幻灯片之间过渡的持续时间(以毫秒为单位) |
swipeHandler | 任意 | null | 带有 CSS 选择器或包含分页的 HTML 元素的字符串或 HTML 元素,该元素将作为唯一可用的滑动处理程序 |
swiperElementNodeName | 字符串 | 'SWIPER-CONTAINER' | swiper 元素节点名称的名称;用于检测 web 组件渲染 |
threshold | 数字 | 5 | 阈值(以 px 为单位)。如果“触摸距离”低于此值,则 swiper 将不会移动 |
thumbs | 任意 | 包含缩略图组件参数的对象
| |
touchAngle | 数字 | 45 | 触发触摸移动的允许角度(以度为单位) |
touchEventsTarget | 'container' | 'wrapper' | 'wrapper' | 监听触摸事件的目标元素。可以是 |
touchMoveStopPropagation | 布尔值 | false | 如果启用,则将停止“touchmove”的传播 |
touchRatio | 数字 | 1 | 触摸比率 |
touchReleaseOnEdges | 布尔值 | false | 启用以在滑块边缘位置(开始、结束)释放触摸事件,以允许进一步的页面滚动。此功能仅适用于“触摸”事件(而非指针事件),因此它将在 iOS/Android 设备上工作,但在带有指针事件的 Windows 设备上不起作用。此外, |
touchStartForcePreventDefault | 布尔值 | false | 强制始终阻止 |
touchStartPreventDefault | 布尔值 | true | 如果禁用,则不会阻止 |
uniqueNavElements | 布尔值 | true | 如果启用(默认)且导航元素参数作为字符串传递(如 |
updateOnWindowResize | 布尔值 | true | Swiper 将在窗口大小调整(方向更改)时重新计算幻灯片位置 |
url | null | 字符串 | null | 在服务器端渲染和启用历史记录时,需要用于活动幻灯片检测 |
userAgent | null | 字符串 | null | 用户代理字符串。在服务器端渲染时需要用于浏览器/设备检测 |
virtual | 任意 | 启用虚拟幻灯片功能。包含虚拟幻灯片参数的对象,或布尔值
| |
virtualTranslate | 布尔值 | false | 启用此选项后,swiper 将正常运行,只是它不会移动,不会设置包装器上的实际 translate 值。当您可能需要创建自定义幻灯片过渡时很有用 |
watchOverflow | 布尔值 | true | 启用后,如果幻灯片不足以滑动,Swiper 将被禁用并隐藏导航按钮。 |
watchSlidesProgress | 布尔值 | false | 启用此功能以计算每个幻灯片的进度和可见性(视口中的幻灯片将具有额外的可见类) |
width | null | 数字 | null | Swiper 宽度(以 px 为单位)。参数允许强制 Swiper 宽度。仅当您在隐藏和 SSR 及测试环境中初始化 Swiper 以进行正确 Swiper 初始化时才有用
|
wrapperClass | 字符串 | 'swiper-wrapper' | 幻灯片包装器的 CSS 类名
|
zoom | 任意 | 启用缩放功能。包含缩放参数的对象,或布尔值
|
初始化滑块后,我们在变量中(如上面示例中的 swiper
变量)拥有其已初始化实例,其中包含有用的方法和属性
属性 | ||
---|---|---|
swiper.a11y | 任意 | |
swiper.activeIndex | 数字 | 当前活动幻灯片的索引号
|
swiper.allowSlideNext | 布尔值 | 通过为此属性分配 |
swiper.allowSlidePrev | 布尔值 | 通过为此属性分配 |
swiper.allowTouchMove | 布尔值 | 通过为此属性分配 |
swiper.animating | 布尔值 | 如果 swiper 正在过渡中,则为 |
swiper.autoplay | 任意 | |
swiper.cardsEffect | 任意 | |
swiper.clickedIndex | 数字 | 上次点击的幻灯片的索引号 |
swiper.clickedSlide | HTMLElement | 指向上次点击的幻灯片的链接(HTMLElement) |
swiper.controller | 任意 | |
swiper.coverflowEffect | 任意 | |
swiper.creativeEffect | 任意 | |
swiper.cubeEffect | 任意 | |
swiper.defaults | 任意 | Swiper 默认选项 |
swiper.el | HTMLElement | 滑块容器 HTML 元素 |
swiper.enabled | 布尔值 | 如果 Swiper 已启用,则为 |
swiper.extendedDefaults | 任意 | 包含全局 Swiper 扩展选项的对象 |
swiper.fadeEffect | 任意 | |
swiper.flipEffect | 任意 | |
swiper.freeMode | 任意 | |
swiper.hashNavigation | 任意 | |
swiper.height | 数字 | 容器的高度 |
swiper.history | 任意 | |
swiper.isBeginning | 布尔值 | 如果滑块位于最“左”/“上”位置,则为 |
swiper.isEnd | 布尔值 | 如果滑块位于最“右”/“下”位置,则为 |
swiper.isLocked | 布尔值 | 如果幻灯片被“锁定”(通过 |
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.slides | HTMLElement[] | 幻灯片 HTML 元素数组。要获取特定的幻灯片 HTMLElement,请使用 |
swiper.slidesEl | HTMLElement | 包装器 HTML 元素 |
swiper.slidesGrid | number[] | 幻灯片网格 |
swiper.slidesSizesGrid | number[] | 幻灯片的宽度数组 |
swiper.snapGrid | number[] | 幻灯片捕捉网格 |
swiper.snapIndex | 数字 |
|
swiper.swipeDirection | 'prev' | 'next' | 滑动方向 |
swiper.thumbs | 任意 | |
swiper.touches | 对象 | 包含以下触摸事件属性的对象
|
swiper.translate | 数字 | 包装器 translate 的当前值 |
swiper.virtual | 任意 | |
swiper.width | 数字 | 容器的宽度 |
swiper.wrapperEl | HTMLElement | 包装器 HTML 元素 |
swiper.zoom | 任意 | |
方法 | ||
swiper.attachEvents() | 再次附加所有事件监听器 | |
swiper.changeDirection(direction, needUpdate) | 将滑块方向从水平更改为垂直,然后再更改回来。
| |
swiper.changeLanguageDirection(direction) | 更改滑块语言
| |
swiper.destroy(deleteInstance, cleanStyles) | 销毁滑块实例并分离所有事件监听器
| |
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 是最后一张幻灯片的最大位置(偏移)
| |
swiper.setTranslate(translate) | 为 swiper 包装器设置自定义 css3 transform 的 translate 值 | |
swiper.slideNext(speed, runCallbacks) | 运行到下一张幻灯片的过渡。
| |
swiper.slidePrev(speed, runCallbacks) | 运行到上一张幻灯片的过渡。
| |
swiper.slideReset(speed, runCallbacks) | 将 swiper 位置重置到当前活动幻灯片,持续时间等于“speed”参数。
| |
swiper.slideTo(index, speed, runCallbacks) | 运行到索引号等于“index”参数的幻灯片的过渡,持续时间等于“speed”参数。
| |
swiper.slideToClosest(speed, runCallbacks) | 将 swiper 位置重置到最近的幻灯片/捕捉点,持续时间等于“speed”参数。
| |
swiper.slideToLoop(index, speed, runCallbacks) | 与 .slideTo 作用相同,但用于启用循环的情况。因此,此方法将滑动到 realIndex 与传入索引匹配的幻灯片
| |
swiper.slidesPerViewDynamic() | 动态计算每视图幻灯片数量,仅当 slidesPerView 设置为 | |
swiper.translateTo(translate, speed, runCallbacks, translateBounds) | 为 swiper 包装器动画自定义 css3 transform 的 translate 值
| |
swiper.unsetGrabCursor() | 取消设置抓取光标 | |
swiper.update() | 手动添加/删除幻灯片后,或隐藏/显示它之后,或对 Swiper 进行任何自定义 DOM 修改之后,您应该调用此方法。此方法还包括以下方法的子调用,您可以单独使用它们 | |
swiper.updateAutoHeight(speed) | 强制 swiper 更新其高度(当 autoHeight 启用时),持续时间等于“speed”参数
| |
swiper.updateProgress() | 重新计算 swiper 进度 | |
swiper.updateSize() | 重新计算 swiper 容器的大小 | |
swiper.updateSlides() | 重新计算幻灯片数量及其偏移量。在您使用 JavaScript 添加/删除幻灯片后很有用 | |
swiper.updateSlidesClasses() | 更新幻灯片和项目符号上的 active/prev/next 类 | |
swiper.use(modules) | 在运行时在 Swiper 上安装模块。 |
Swiper 附带了许多有用的事件,您可以监听。事件可以通过两种方式分配
在 swiper 初始化时使用 on
参数
const swiper = new Swiper('.swiper', {
// ...
on: {
init: function () {
console.log('swiper initialized');
},
},
});
在 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 时触发事件。接收 |
destroy | (swiper) | swiper 销毁时触发事件 |
doubleClick | (swiper, event) | 用户双击/轻触 Swiper 时触发事件 |
doubleTap | (swiper, event) | 用户双击 Swiper 容器时触发事件。接收 |
fromEdge | (swiper) | Swiper 从开始或结束位置离开时触发事件 |
init | (swiper) | Swiper 初始化后立即触发。
|
lock | (swiper) | 当 swiper 被锁定(当 |
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 上并移动它时触发事件。接收 |
slidesGridLengthChange | (swiper) | 幻灯片网格更改时触发事件 |
slidesLengthChange | (swiper) | 幻灯片数量更改时触发事件 |
slidesUpdated | (swiper) | 计算并更新幻灯片及其大小后触发事件 |
snapGridLengthChange | (swiper) | 捕捉网格更改时触发事件 |
snapIndexChange | (swiper) | 捕捉索引更改时触发事件 |
tap | (swiper, event) | 用户点击/轻触 Swiper 时触发事件。接收 |
toEdge | (swiper) | Swiper 到达开始或结束位置时触发事件 |
touchEnd | (swiper, event) | 用户释放 Swiper 时触发事件。接收 |
touchMove | (swiper, event) | 用户触摸并移动手指在 Swiper 上时触发事件。接收 |
touchMoveOpposite | (swiper, event) | 用户触摸并移动手指在 Swiper 上,方向与 direction 参数相反时触发事件。接收 |
touchStart | (swiper, event) | 用户触摸 Swiper 时触发事件。接收 |
transitionEnd | (swiper) | 过渡后触发事件。 |
transitionStart | (swiper) | 过渡开始时触发事件。 |
unlock | (swiper) | 当 swiper 被解锁(当 |
更新 | (swiper) | 在调用 swiper.update() 后触发事件 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
disabledClass | 字符串 | 'swiper-button-disabled' | 导航按钮禁用时添加的 CSS 类名 |
enabled | 布尔值 | 用于断点以启用/禁用某些断点上的导航的布尔属性 | |
字符串 | '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.nextEl | HTMLElement | “下一个”导航按钮的 HTMLElement |
swiper.prevEl | HTMLElement | “上一个”导航按钮的 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 标签。仅适用于 |
clickable | 布尔值 | false | 如果为 |
clickableClass | 字符串 | 'swiper-pagination-clickable' | 分页可点击时设置的 CSS 类名 |
currentClass | 字符串 | 'swiper-pagination-current' | 在“分数”分页中,当前活动索引元素的 CSS 类名 |
dynamicBullets | 布尔值 | false | 如果您使用子弹分页且幻灯片很多,则启用它会很好。这样它将同时只显示几个子弹。 |
dynamicMainBullets | 数字 | 1 | 启用 |
el | 任意 | null | 带有 CSS 选择器或 HTML 元素的分页容器的字符串或 HTML 元素 |
enabled | 布尔值 | 用于断点以启用/禁用某些断点上的分页的布尔属性 | |
formatFractionCurrent | function(number) | 格式化分数分页当前数字。函数接收当前数字,您需要返回格式化的值 | |
formatFractionTotal | function(number) | 格式化分数分页总数。函数接收总数,您需要返回格式化的值 | |
字符串 | '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 的 |
progressbarOppositeClass | 字符串 | 'swiper-pagination-progressbar-opposite' | 分页进度条相反的 CSS 类名 |
renderBullet | function(index, className) | 此参数允许完全自定义分页子弹,您需要在此处传递一个接受分页子弹的
| |
renderCustom | function(swiper, current, total) | 此参数是
| |
renderFraction | function(currentClass, totalClass) | 此参数允许自定义“分数”分页 HTML。仅适用于
| |
renderProgressbar | function(progressbarFillClass) | 此参数允许自定义“进度”分页。仅适用于
| |
totalClass | 字符串 | 'swiper-pagination-total' | 在“分数”分页中,包含“捕捉”总数的元素的 CSS 类名 |
type | 'progressbar' | 'bullets' | 'fraction' | 'custom' | 'bullets' | 带有分页类型的字符串。可以是 |
verticalClass | 字符串 | 'swiper-pagination-vertical' | 在垂直 Swiper 中,设置为分页的 CSS 类名 |
属性 | ||
---|---|---|
swiper.bullets | HTMLElement[] | 分页子弹 HTML 元素数组。要获取特定的幻灯片 HTMLElement,请使用 |
swiper.el | HTMLElement | 分页容器元素的 HTMLElement |
方法 | ||
swiper.destroy() | 销毁分页 | |
swiper.init() | 初始化分页 | |
swiper.render() | 渲染分页布局 | |
swiper.update() | 更新分页状态(启用/禁用/活动) |
名称 | 参数 | 描述 |
---|---|---|
paginationHide | (swiper) | 分页隐藏时触发事件 |
paginationRender | (swiper, paginationEl) | 分页渲染后触发事件 |
paginationShow | (swiper) | 分页显示时触发事件 |
paginationUpdate | (swiper, paginationEl) | 分页更新时触发事件 |
{
--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 | 设置为 |
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 | 设置为 |
verticalClass | 字符串 | 'swiper-scrollbar-vertical' | 在垂直 Swiper 中,设置为滚动条的 CSS 类名 |
属性 | ||
---|---|---|
swiper.dragEl | HTMLElement | 滚动条可拖动处理程序元素的 HTMLElement |
swiper.el | HTMLElement | 滚动条容器元素的 HTMLElement |
方法 | ||
swiper.destroy() | 销毁滚动条 | |
swiper.init() | 初始化滚动条 | |
swiper.setTranslate() | 更新滚动条 translate | |
swiper.updateSize() | 更新滚动条轨道和处理程序大小 |
名称 | 参数 | 描述 |
---|---|---|
scrollbarDragEnd | (swiper, event) | 可拖动滚动条拖动结束时触发事件 |
scrollbarDragMove | (swiper, event) | 可拖动滚动条拖动移动时触发事件 |
scrollbarDragStart | (swiper, event) | 可拖动滚动条拖动开始时触发事件 |
{
--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 | 过渡之间的延迟(以毫秒为单位)。如果未指定此参数,则将禁用自动播放 如果您需要为特定幻灯片指定不同的延迟,可以通过在幻灯片上使用
|
disableOnInteraction | 布尔值 | true | 设置为 |
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 | 如果您想禁用自由模式下的动量反弹,请设置为 |
momentumBounceRatio | 数字 | 1 | 值越高,产生更大的动量反弹效果 |
momentumRatio | 数字 | 1 | 值越高,在您释放滑块后,产生更大的动量距离 |
momentumVelocityRatio | 数字 | 1 | 值越高,在您释放滑块后,产生更大的动量速度 |
sticky | 布尔值 | false | 设置为启用,以在自由模式下启用幻灯片位置的吸附 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
fill | 'row' | 'column' | 'column' | 可以是
|
rows | 数字 | 1 | 多行布局的幻灯片行数 |
Manipulation 模块添加了有用的 Swiper 方法来操作幻灯片。仅与 Swiper Core 版本一起使用才有意义,不适用于 Swiper React 或 Vue。
方法 | ||
---|---|---|
swiper.addSlide(index, slides) | 在所需索引处添加新幻灯片。幻灯片可以是 HTMLElement 或带有新幻灯片的 HTML 字符串,也可以是包含此类幻灯片的数组,例如
| |
swiper.appendSlide(slides) | 在末尾添加新幻灯片。幻灯片可以是 HTMLElement 或带有新幻灯片的 HTML 字符串,也可以是包含此类幻灯片的数组,例如
| |
swiper.prependSlide(slides) | 在开头添加新幻灯片。幻灯片可以是 HTMLElement 或带有新幻灯片的 HTML 字符串,也可以是包含此类幻灯片的数组,例如
| |
swiper.removeAllSlides() | 移除所有幻灯片 | |
swiper.removeSlide(slideIndex) | 删除选定的幻灯片。slideIndex 可以是要删除的幻灯片索引的数字或索引数组。
|
Swiper 支持 swiper/slides 嵌套元素的视差过渡效果。支持两种类型的视差元素
swiper
的直接子元素。这些元素的视差效果将取决于滑块的总进度。适用于视差背景要启用视差效果,您需要使用 `parallax:true` 参数初始化 Swiper,并为所需元素添加以下(或混合)属性之一
data-swiper-parallax
- 启用 transform-translate 视差过渡。此属性可以接受
number
- 以像素为单位的值(如上例中的标题、副标题),用于根据进度移动元素。在这种情况下,此元素将根据幻灯片位置(下一张或上一张)移动 ± 此像素值percentage
- (如“parallax-bg”)根据进度及其大小移动元素。在这种情况下,此元素将根据幻灯片位置(下一张或上一张)移动其大小(水平方向为宽度,垂直方向为高度)的 ± 此百分比。因此,如果元素宽度为 400px 且您指定 data-swiper-parallax="50%",则它将移动 ± 200pxdata-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 | 启用幻灯片交叉淡入淡出 |
请确保将 effect
参数设置为 '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 | 将进度/偏移量限制在侧边幻灯片的数量。如果为 |
next | CreativeEffectTransform | 下一张幻灯片变换。
| |
perspective | 布尔值 | true | 如果您的自定义变换需要 3D 变换( |
prev | CreativeEffectTransform | 上一张幻灯片变换。接受以下类型的对象
| |
progressMultiplier | 数字 | 1 | 允许乘以幻灯片变换和不透明度。 |
shadowPerProgress | 布尔值 | false | 根据 |
除了 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 中。img
、picture
或 canvas
元素之一。如果您想在其他自定义元素上进行缩放,只需将 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 | 设置为 |
onlyInViewport | 布尔值 | true | 启用后,它将控制当前在视口中的滑块 |
pageUpDown | 布尔值 | true | 启用后,它将启用通过 Page Up 和 Page Down 键进行键盘导航 |
属性 | ||
---|---|---|
swiper.enabled | 布尔值 | 键盘控制是否已启用 |
方法 | ||
swiper.disable() | 禁用键盘控制 | |
swiper.enable() | 启用键盘控制 |
名称 | 参数 | 描述 |
---|---|---|
keyPress | (swiper, keyCode) | 按下按键时将触发事件 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
enabled | 布尔值 | false | 设置为 |
eventsTarget | 任意 | 'container' | 接受鼠标滚轮事件的容器的 CSS 选择器字符串或 HTML 元素。默认情况下它是 swiper |
forceToAxis | 布尔值 | false | 设置为 |
invert | 布尔值 | false | 设置为 |
noMousewheelClass | 字符串 | 'swiper-no-mousewheel' | 具有此类的元素上的滚动将被忽略 |
releaseOnEdges | 布尔值 | false | 设置为 |
sensitivity | 数字 | 1 | 鼠标滚轮数据的乘数,允许调整鼠标滚轮灵敏度 |
thresholdDelta | null | 数字 | null | 触发 Swiper 幻灯片更改的最小鼠标滚轮滚动增量 |
thresholdTime | null | 数字 | null | 触发 Swiper 幻灯片更改的最小鼠标滚轮滚动时间增量(以毫秒为单位) |
属性 | ||
---|---|---|
swiper.enabled | 布尔值 | 鼠标滚轮控制是否已启用 |
方法 | ||
swiper.disable() | 禁用鼠标滚轮控制 | |
swiper.enable() | 启用鼠标滚轮控制 |
名称 | 参数 | 描述 |
---|---|---|
scroll | (swiper, event) | 鼠标滚轮滚动时将触发事件 |
虚拟幻灯片模块允许在 DOM 中仅保留所需数量的幻灯片。如果您有大量幻灯片,特别是包含重量级 DOM 树或图像的幻灯片,这在性能和内存方面非常有用。
slidesPerView: 'auto'
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
addSlidesAfter | 数字 | 0 | 增加活动幻灯片后预渲染幻灯片的数量 |
addSlidesBefore | 数字 | 0 | 增加活动幻灯片前预渲染幻灯片的数量 |
缓存 | 布尔值 | true | 启用渲染幻灯片 HTML 元素的 DOM 缓存。一旦它们被渲染,它们将被保存到缓存中并从中重用。 |
enabled | 布尔值 | false | 虚拟幻灯片是否已启用 |
renderExternal | function(data) | 用于外部渲染的函数(例如,使用其他库处理 DOM 操作和状态,如 React.js 或 Vue.js)。它接受一个包含以下属性的
| |
renderExternalUpdate | 布尔值 | true | 启用后(默认),它将在调用 renderExternal 后立即更新 Swiper 布局。当与异步渲染的渲染库一起使用时,禁用并手动更新 Swiper 会很有用 |
renderSlide | function(slide, index) | 渲染幻灯片的函数。它接受 | |
幻灯片 | T[] | [] | 包含幻灯片的数组 |
slidesPerViewAutoSlideSize | 数字 | 320 | slidesPerView: |
属性 | ||
---|---|---|
swiper.cache | 对象 | 包含缓存幻灯片 HTML 元素的对象 |
swiper.from | 数字 | 第一张渲染幻灯片的索引 |
swiper.slides | T[] | 通过 |
swiper.to | 数字 | 最后一张渲染幻灯片的索引 |
方法 | ||
swiper.appendSlide(slide) | 追加幻灯片。
| |
swiper.prependSlide(slide) | 前置幻灯片。
| |
swiper.removeAllSlides() | 移除所有幻灯片
| |
swiper.removeSlide(slideIndexes) | 删除特定幻灯片或多张幻灯片。
| |
swiper.update(force) | 更新虚拟幻灯片状态 |
自版本 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,
});
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
getSlideIndex | function(swiper, hash) | 设计用于虚拟幻灯片,当无法通过哈希在 DOM 中找到幻灯片时(例如,尚未渲染) | |
replaceState | 布尔值 | false | 除了哈希导航之外,还用于将当前 URL 状态替换为新状态,而不是将其添加到历史记录中 |
watchState | 布尔值 | false | 设置为 |
名称 | 参数 | 描述 |
---|---|---|
hashChange | (swiper) | 窗口哈希更改时将触发事件 |
hashSet | (swiper) | 当 Swiper 更新哈希时将触发事件 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
enabled | 布尔值 | false | 启用历史记录插件。 |
keepQuery | 布尔值 | false | 更改浏览器 URL 时保留查询参数。 |
key | 字符串 | 'slides' | 幻灯片的 URL 键 |
replaceState | 布尔值 | false | 除了哈希导航或历史记录之外,还用于将当前 URL 状态替换为新状态,而不是将其添加到历史记录中 |
root | 字符串 | '' | Swiper 页面根目录,当您在非根网站页面上使用 Swiper 历史模式时很有用。例如可以是 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
by | 'slide' | 'container' | 'slide' | 定义了如何控制另一个滑块:逐张幻灯片(考虑到另一个滑块的网格)或取决于所有幻灯片/容器(取决于滑块总百分比)。 |
control | 任意 | 在此处传递另一个 Swiper 实例或包含应由当前 Swiper 控制的 Swiper 实例的数组。也接受 Swiper 元素的 CSS 选择器字符串或 Swiper 元素的 HTMLElement | |
inverse | 布尔值 | false | 设置为 |
属性 | ||
---|---|---|
swiper.control | 任意 | 在此处传递另一个 Swiper 实例或包含应由当前 Swiper 控制的 Swiper 实例的数组 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
containerMessage | null | 字符串 | null | 外部 Swiper 容器的屏幕阅读器消息 |
containerRole | null | 字符串 | null | 要在 Swiper 容器上设置的“role”属性值 |
containerRoleDescriptionMessage | null | 字符串 | null | 屏幕阅读器描述外部 Swiper 容器角色的消息 |
enabled | 布尔值 | true | 启用 A11y |
firstSlideMessage | 字符串 | '这是第一张幻灯片' | 当 Swiper 处于第一张幻灯片时,上一张按钮的屏幕阅读器消息 |
id | null | 字符串 | 数字 | null | 要在 swiper-wrapper 上设置的 |
itemRoleDescriptionMessage | null | 字符串 | null | 屏幕阅读器描述幻灯片元素角色的消息 |
lastSlideMessage | 字符串 | '这是最后一张幻灯片' | 当 Swiper 处于最后一张幻灯片时,下一张按钮的屏幕阅读器消息 |
nextSlideMessage | 字符串 | '下一张幻灯片' | 下一张按钮的屏幕阅读器消息 |
notificationClass | 字符串 | 'swiper-notification' | A11y 通知器的 CSS 类名 |
paginationBulletMessage | 字符串 | '转到幻灯片{{index}}' | 单个分页子弹的屏幕阅读器消息 |
prevSlideMessage | 字符串 | '上一张幻灯片' | 上一张按钮的屏幕阅读器消息 |
scrollOnFocus | 布尔值 | true | 启用滚动到已聚焦的幻灯片 |
slideLabelMessage | 字符串 | '{{index}} / {{slidesLength}}' | 屏幕阅读器描述幻灯片元素标签的消息 |
slideRole | 字符串 | 'group' | Swiper 幻灯片 |
wrapperLiveRegion | 布尔值 | true | swiper-wrapper 是否应应用 |
您有两种制作自定义 Swiper 版本的方法。
如果您的项目中使用支持 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 构建器,允许构建自定义库版本,您可以在其中仅包含所需的模块。我们需要以下内容
将 Swiper GitHub 仓库 下载并解压到本地文件夹
安装 Node.js(如果尚未安装)
现在,我们需要安装所需的依赖项。进入已下载并解压的 Swiper 仓库文件夹并在终端中执行
npm install
打开 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',
],
};
现在,我们已准备好构建自定义版本的 Swiper
npm run build:prod
就是这样。生成的 CSS 和 JS 文件及其压缩版本将在 dist/
文件夹中提供。
Swiper 是完全类型化的,它导出 Swiper
和 SwiperOptions
类型
// 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 定义浏览器,了解所有类型、选项、属性和方法。