<!-- 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 样式
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 样式是核心版本和模块的单独样式(包导入)
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 样式也是核心版本和模块的单独样式(包导入)
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 的 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 | 任意 | 带有 autoplay 参数的对象或布尔值
| |
breakpoints | 对象 | 允许为不同的响应式断点(屏幕尺寸)设置不同的参数。并非所有参数都可以在断点中更改,只有那些不需要不同布局和逻辑的参数,例如
| |
breakpointsBase | 任意 | 'window' | 断点基础(测试版)。可以是 |
cardsEffect | 任意 | 带有 Cards-effect 参数的对象
| |
centerInsufficientSlides | 布尔值 | false | 启用后,如果幻灯片数量少于 |
centeredSlides | 布尔值 | false | 如果为 |
centeredSlidesBounds | 布尔值 | false | 如果为 |
containerModifierClass | 字符串 | 'swiper-' | 可以根据不同参数添加到 swiper 容器的修饰符 CSS 类的开头。 |
controller | 任意 | 带有控制器参数的对象,或者布尔值
| |
coverflowEffect | 任意 | 带有 Coverflow 效果参数的对象。
| |
createElements | 布尔值 | false | 启用后,Swiper 将自动使用 swiper-wrapper 元素包装幻灯片,并为导航、分页和滚动条创建所需的元素(如果它们已启用)(使用它们各自的参数对象或布尔值 |
creativeEffect | 任意 | 带有创意效果参数的对象
| |
cssMode | 布尔值 | false | 启用后,它将使用现代 CSS Scroll Snap API。 它不支持 Swiper 的所有功能,但在简单的配置中可能会带来更好的性能。 这是启用时不支持的功能
如果您将其与其他效果(尤其是 3D 效果)一起使用,则需要使用
|
cubeEffect | 任意 | 带有立方体效果参数的对象
| |
direction | 'horizontal' | 'vertical' | 'horizontal' | 可以是 |
edgeSwipeDetection | 字符串 | 布尔值 | false | 启用此项可在应用程序中释放 Swiper 事件以进行滑动返回操作。 如果设置为 |
edgeSwipeThreshold | 数字 | 20 | 从屏幕左边缘释放触摸事件以在应用程序中滑动返回的区域(以像素为单位) |
effect | 字符串 | 'slide' | 过渡效果。 可以是 |
enabled | 布尔值 | true | Swiper 是否最初启用。当 Swiper 被禁用时,它将隐藏所有导航元素,并且不会响应任何事件和交互 |
eventsPrefix | 字符串 | `swiper` | Swiper 元素(Web 组件)发出的所有 DOM 事件的事件名称前缀 |
fadeEffect | 任意 | 带有淡入淡出效果参数的对象
| |
flipEffect | 任意 | 带有翻转效果参数的对象
| |
focusableElements | 字符串 | 'input, select, option, textarea, button, video, label' | 可聚焦元素的 CSS 选择器。如果这些元素“聚焦”,则会禁用滑动。 |
followFinger | 布尔值 | true | 如果禁用此项,则滑块仅在您释放它时才会动画,在您将手指按在上面时不会移动。 |
freeMode | 任意 | 启用自由模式功能。带有自由模式参数的对象或布尔值
| |
grabCursor | 布尔值 | false | 此选项可能会稍微提高桌面可用性。如果为 |
grid | 任意 | 带有网格参数的对象,用于启用“多行”滑块。
| |
hashNavigation | 任意 | 启用幻灯片的哈希 URL 导航。带有哈希导航参数的对象或布尔值
| |
height | null | 数字 | null | Swiper 高度(以像素为单位)。参数允许强制设置 Swiper 高度。仅当您在 Swiper 隐藏时以及在 SSR 和测试环境中初始化 Swiper 以进行正确的 Swiper 初始化时才有用
|
history | 任意 | 启用历史推送状态,其中每个幻灯片都有自己的 URL。在此参数中,您必须指定主幻灯片 URL,例如 带有历史导航参数的对象或布尔值
| |
init | 布尔值 | true | 是否应在创建实例时自动初始化 Swiper。如果禁用,则需要通过调用 |
initialSlide | 数字 | 0 | 初始幻灯片的索引号。 |
injectStyles | string[] | 将文本样式注入阴影 DOM。仅用于 Swiper 元素 | |
injectStylesUrls | string[] | 将样式 | |
keyboard | 任意 | 启用使用键盘浏览幻灯片。带有键盘参数的对象或布尔值
| |
lazyPreloadPrevNext | 数字 | 0 | 要预加载的下一个和上一个幻灯片的数量。 仅在使用延迟加载时适用。 |
lazyPreloaderClass | 字符串 | 'swiper-lazy-preloader' | 延迟预加载器的 CSS 类名 |
longSwipes | 布尔值 | true | 如果您想禁用长滑动,则设置为 |
longSwipesMs | 数字 | 300 | 在长滑动期间触发滑动到下一个/上一个幻灯片的最小持续时间(以毫秒为单位) |
longSwipesRatio | 数字 | 0.5 | 在长滑动期间触发滑动到下一个/上一个幻灯片的比率 |
loop | 布尔值 | false | 设置为 由于循环模式的工作方式(它会重新排列幻灯片),幻灯片总数必须
|
loopAddBlankSlides | 布尔值 | true | 如果您使用网格或 |
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 父元素的突变,则设置为 |
observeSlideChildren | 布尔值 | false | 如果还需要观察 Swiper 幻灯片子元素的突变,则设置为 |
observer | 布尔值 | false | 设置为 |
on | 对象 | 注册事件处理程序 | |
onAny | 函数(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 初始化时触发过渡/幻灯片更改/开始/结束事件。如果您的 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 | 在容器末尾(所有幻灯片之后)添加(以像素为单位)额外的幻灯片偏移 |
slidesOffsetBefore | 数字 | 0 | 在容器开头(所有幻灯片之前)添加(以像素为单位)额外的幻灯片偏移 |
slidesPerGroup | 数字 | 1 | 设置幻灯片组数以定义和启用分组滑动。当 slidesPerView > 1 时非常有用 |
slidesPerGroupAuto | 布尔值 | false | 此参数仅用于 |
slidesPerGroupSkip | 数字 | 0 | 此参数的工作方式如下:如果 如果 |
slidesPerView | 数字 | 'auto' | 1 | 每个视图的幻灯片数量(在滑块容器上同时可见的幻灯片数量)。
|
spaceBetween | 字符串 | 数字 | 0 | 幻灯片之间的距离,单位为像素。
|
speed | 数字 | 300 | 幻灯片之间过渡的持续时间(以毫秒为单位) |
swipeHandler | 任意 | null | 带有 CSS 选择器或 HTML 元素的字符串,表示分页容器,该容器将作为滑动的唯一可用处理程序 |
swiperElementNodeName | 字符串 | 'SWIPER-CONTAINER' | swiper 元素节点名称;用于检测 Web 组件渲染 |
threshold | 数字 | 5 | 阈值,单位为像素。如果“触摸距离”低于此值,则滑块将不会移动 |
thumbs | 任意 | 包含缩略图组件参数的对象
| |
touchAngle | 数字 | 45 | 触发触摸移动的允许角度(以度为单位) |
touchEventsTarget | 'container' | 'wrapper' | 'wrapper' | 用于监听触摸事件的目标元素。可以是 |
touchMoveStopPropagation | 布尔值 | false | 如果启用,则将停止“touchmove”事件的传播 |
touchRatio | 数字 | 1 | 触摸比例 |
touchReleaseOnEdges | 布尔值 | false | 启用后,可以在滑块边缘位置(开始、结束)释放触摸事件,以便进一步滚动页面。此功能仅适用于“touch”事件(而非指针事件),因此它可以在 iOS/Android 设备上运行,而不能在具有指针事件的 Windows 设备上运行。此外, |
touchStartForcePreventDefault | 布尔值 | false | 强制始终阻止 |
touchStartPreventDefault | 布尔值 | true | 如果禁用,则不会阻止 |
uniqueNavElements | 布尔值 | true | 如果启用(默认情况下),并且导航元素的参数作为字符串传递(如 |
updateOnWindowResize | 布尔值 | true | Swiper 将在窗口大小调整(orientationchange)时重新计算幻灯片位置 |
url | null | 字符串 | null | 在服务器端渲染并启用历史记录时,检测活动幻灯片所必需 |
userAgent | null | 字符串 | null | userAgent 字符串。在服务器端渲染时,进行浏览器/设备检测所必需 |
virtual | 任意 | 启用虚拟幻灯片功能。包含虚拟幻灯片参数的对象,或布尔值
| |
virtualTranslate | 布尔值 | false | 启用此选项后,滑块将照常运行,但不会移动,也不会在包装器上设置实际的 translate 值。当您可能需要创建自定义幻灯片过渡时非常有用 |
watchOverflow | 布尔值 | true | 启用后,如果幻灯片不足以进行滑动,Swiper 将被禁用并隐藏导航按钮。 |
watchSlidesProgress | 布尔值 | false | 启用此功能可以计算每个幻灯片的进度和可见性(视口中的幻灯片将具有额外的 visible 类) |
width | null | 数字 | null | Swiper 宽度(以像素为单位)。此参数允许强制指定 Swiper 宽度。仅当您在隐藏状态下初始化 Swiper、在 SSR 和测试环境中进行正确的 Swiper 初始化时才有用
|
wrapperClass | 字符串 | 'swiper-wrapper' | 幻灯片包装器的 CSS 类名
|
zoom | 任意 | 启用缩放功能。包含缩放参数的对象,或布尔值
|
在初始化滑块后,我们在变量中(例如上面示例中的 swiper
变量)拥有其初始化的实例,其中包含有用的方法和属性
属性 | ||
---|---|---|
swiper.a11y | 任意 | |
swiper.activeIndex | 数字 | 当前活动幻灯片的索引号
|
swiper.allowSlideNext | 布尔值 | 通过将 |
swiper.allowSlidePrev | 布尔值 | 通过将 |
swiper.allowTouchMove | 布尔值 | 通过将 |
swiper.animating | 布尔值 | 如果滑块正在过渡中,则为 |
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.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() | 获取滑块包装器 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 表示其在最后一张幻灯片上的最大位置(偏移量)
| |
swiper.setTranslate(translate) | 为滑块包装器设置自定义 css3 变换 translate 值 | |
swiper.slideNext(speed, runCallbacks) | 运行到下一张幻灯片的过渡。
| |
swiper.slidePrev(speed, runCallbacks) | 运行到上一张幻灯片的过渡。
| |
swiper.slideReset(speed, runCallbacks) | 将滑块位置重置为当前活动幻灯片,持续时间等于 'speed' 参数。
| |
swiper.slideTo(index, speed, runCallbacks) | 运行到索引号等于 'index' 参数的幻灯片的过渡,持续时间等于 'speed' 参数。
| |
swiper.slideToClosest(speed, runCallbacks) | 将 swiper 的位置重置到最近的 slide/吸附点,持续时间等于“speed”参数。
| |
swiper.slideToLoop(index, speed, runCallbacks) | 与 .slideTo 相同,但用于启用循环的情况。因此,此方法将滑动到 realIndex 与传入索引匹配的幻灯片
| |
swiper.slidesPerViewDynamic() | 获取动态计算的每视图幻灯片数量,仅当 slidesPerView 设置为 | |
swiper.translateTo(translate, speed, runCallbacks, translateBounds) | 为 swiper wrapper 的自定义 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) | 在调整大小处理程序之前将触发事件 |
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) | 当用户触摸并在与 direction 参数相反的方向上移动手指时将触发事件。接收 |
touchStart | (swiper, event) | 当用户触摸 Swiper 时将触发事件。接收 |
transitionEnd | (swiper) | 在过渡之后将触发事件。 |
transitionStart | (swiper) | 在过渡开始时将触发事件。 |
unlock | (swiper) | 当 swiper 被解锁(当启用 |
update | (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 元素,在单击该元素后,该元素将用作“下一个”按钮 |
prevEl | 任意 | null | CSS 选择器字符串或 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' | 在“fraction”分页中,具有当前活动索引的元素的 CSS 类名 |
dynamicBullets | 布尔值 | false | 如果您使用带有大量幻灯片的分页符分页,则最好启用此项。因此,它将仅保持少数分页符同时可见。 |
dynamicMainBullets | 数字 | 1 | 启用 |
el | 任意 | null | 带有 CSS 选择器或 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' | 滚动条可拖动元素的大小(以像素为单位)。 |
draggable | 布尔值 | false | 设置为 |
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 | 设置为 |
verticalClass | 字符串 | 'swiper-scrollbar-vertical' | 在垂直 Swiper 中设置到滚动条的 CSS 类名。 |
属性 | ||
---|---|---|
swiper.dragEl | HTMLElement | 滚动条可拖动句柄元素的 HTMLElement。 |
swiper.el | HTMLElement | 滚动条容器元素的 HTMLElement。 |
方法 | ||
swiper.destroy() | 销毁滚动条。 | |
swiper.init() | 初始化滚动条。 | |
swiper.setTranslate() | 更新滚动条位移。 | |
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 | 多行布局的幻灯片行数。 |
操作模块为 Swiper 添加了有用的方法来操作幻灯片。它仅适用于 Swiper Core 版本,不适用于 Swiper React 或 Vue。
方法 | ||
---|---|---|
swiper.addSlide(index, slides) | 在所需的索引处添加新的幻灯片。slides 可以是 HTMLElement 或带有新幻灯片的 HTML 字符串,或包含此类幻灯片的数组,例如
| |
swiper.appendSlide(slides) | 在末尾添加新的幻灯片。slides 可以是 HTMLElement 或带有新幻灯片的 HTML 字符串,或包含此类幻灯片的数组,例如
| |
swiper.prependSlide(slides) | 在开头添加新的幻灯片。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”)根据进度及其大小移动元素。在这种情况下,此类元素将根据幻灯片位置(下一张或上一张)在其大小的 ± 此百分比上移动(水平方向为宽度,垂直方向为高度)。因此,如果元素宽度为 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 | 启用幻灯片交叉淡入淡出 |
请务必将 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 | 根据 |
除了 控制器 组件外,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 中。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 | 触发滑块切换的最小鼠标滚轮滚动增量 |
thresholdTime | null | 数字 | null | 触发滑块切换的最小鼠标滚轮滚动时间增量(以毫秒为单位) |
属性 | ||
---|---|---|
swiper.enabled | 布尔值 | 是否启用鼠标滚轮控制 |
方法 | ||
swiper.disable() | 禁用鼠标滚轮控制 | |
swiper.enable() | 启用鼠标滚轮控制 |
名称 | 参数 | 描述 |
---|---|---|
scroll | (swiper, event) | 在鼠标滚轮滚动时触发的事件 |
虚拟幻灯片模块允许仅在 DOM 中保留所需数量的幻灯片。 如果您有很多幻灯片,尤其是具有重量级 DOM 树或图像的幻灯片,则在性能和内存问题方面非常有用。
slidesPerView: 'auto'
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
addSlidesAfter | 数字 | 0 | 增加活动幻灯片之后预渲染的幻灯片数量 |
addSlidesBefore | 数字 | 0 | 增加活动幻灯片之前预渲染的幻灯片数量 |
cache | 布尔值 | true | 启用渲染幻灯片 html 元素的 DOM 缓存。一旦渲染,它们将保存到缓存中并从中重用。 |
enabled | 布尔值 | false | 是否启用虚拟幻灯片 |
renderExternal | function(data) | 用于外部渲染的函数(例如,使用其他库来处理 DOM 操作和状态,例如 React.js 或 Vue.js)。 作为参数,它接受具有以下属性的
| |
renderExternalUpdate | 布尔值 | true | 启用后(默认),它将在调用 renderExternal 后立即更新 Swiper 布局。 当与异步渲染的渲染库一起使用时,禁用并手动更新滑块非常有用 |
renderSlide | function(slide, index) | 用于渲染幻灯片的函数。 作为参数,它接受 | |
slides | T[] | [] | 幻灯片数组 |
属性 | ||
---|---|---|
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 | 除了 hashnav 之外,还用于用新的状态替换当前 URL 状态,而不是将其添加到历史记录中 |
watchState | 布尔值 | false | 设置为 |
名称 | 参数 | 描述 |
---|---|---|
hashChange | (swiper) | 当窗口哈希值更改时触发的事件 |
hashSet | (swiper) | 当滑块更新哈希值时触发的事件 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
enabled | 布尔值 | false | 启用历史记录插件。 |
keepQuery | 布尔值 | false | 更改浏览器 URL 时保留查询参数。 |
key | 字符串 | 'slides' | 幻灯片的 URL 键 |
replaceState | 布尔值 | false | 除了 hashnav 或历史记录之外,还用于用新的状态替换当前 URL 状态,而不是将其添加到历史记录中 |
root | 字符串 | '' | 滑块页面根目录,当您不在根网站页面上使用滑块历史记录模式时,指定此项很有用。 例如,可以是 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
by | 'slide' | 'container' | 'slide' | 定义如何控制另一个滑块:逐个幻灯片(相对于其他滑块的网格)或取决于所有幻灯片/容器(取决于总滑块百分比)。 |
control | 任意 | 在此处传递另一个滑块实例或应由该滑块控制的滑块实例数组。 还接受带有滑块元素的 CSS 选择器的字符串或滑块元素的 HTMLElement | |
inverse | 布尔值 | false | 设置为 |
属性 | ||
---|---|---|
swiper.control | 任意 | 在此处传递另一个滑块实例或应由该滑块控制的滑块实例数组 |
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
containerMessage | null | 字符串 | null | 外部滑块容器的屏幕阅读器消息 |
containerRole | null | 字符串 | null | 要在滑块容器上设置的“role”属性的值 |
containerRoleDescriptionMessage | null | 字符串 | null | 用于描述外部滑块容器角色的屏幕阅读器消息 |
enabled | 布尔值 | true | 启用 A11y |
firstSlideMessage | 字符串 | '这是第一张幻灯片' | 当滑块位于第一张幻灯片时,用于前一个按钮的屏幕阅读器消息 |
id | null | 字符串 | 数字 | null | 要在 swiper-wrapper 上设置的 |
itemRoleDescriptionMessage | null | 字符串 | null | 用于描述幻灯片元素角色的屏幕阅读器消息 |
lastSlideMessage | 字符串 | '这是最后一张幻灯片' | 当 Swiper 处于最后一张幻灯片时,为屏幕阅读器提供的“下一张”按钮的消息 |
nextSlideMessage | 字符串 | '下一张幻灯片' | 为屏幕阅读器提供的“下一张”按钮的消息 |
notificationClass | 字符串 | 'swiper-notification' | A11y 通知的 CSS 类名 |
paginationBulletMessage | 字符串 | '跳转到幻灯片{{索引}}' | 为屏幕阅读器提供的单个分页圆点消息 |
prevSlideMessage | 字符串 | '上一张幻灯片' | 为屏幕阅读器提供的“上一张”按钮的消息 |
scrollOnFocus | 布尔值 | true | 启用滚动到已聚焦的幻灯片 |
slideLabelMessage | 字符串 | '{{索引}} / {{幻灯片长度}}' | 为屏幕阅读器提供的描述幻灯片元素标签的消息 |
slideRole | 字符串 | 'group' | Swiper 幻灯片 |
您有两种方法可以制作 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
- Hash 导航模块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 定义浏览器,以查看所有类型、选项、属性和方法。