<!-- 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 定义浏览器,了解所有类型、选项、属性和方法。