轻量级翻页插件swiper
大约 3 分钟
轻量级翻页插件 swiper
这里的 swiper 是由 fex-team 团队开源的轻量级翻页插件
下载插件
使用
引入插件
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>document</title>
    <link rel="stylesheet" href="./swiper/swiper.css" />
  </head>
  <body>
    <script src="./swiper/swiper.js"></script>
  </body>
</html>定义容器
创建一个有宽高的容器
<div id="outer-container"></div>#outer-container {
  height: 100%;
  width: 100%;
}创建 swiper
const list = [
  {
    content: '<h1>第 1 页</h1>',
  },
  {
    content: '<h1>第 2 页</h1>',
  },
  // ...
];
const swiper = new Swiper({
  container: document.querySelector('#outer-container'),
  data: list,
});html 写在 js 中不方便编写,这里通过 script 模板编写页面
<script type="text/html" id="first-page">
  <div class="page-wrap">这里是页面一的内容</div>
</script>const list = [
  {
    content: document.getElementById('first-page').innerHTML,
  },
  // ...
];配置项
| 配置项 | 类型 | 默认值 | 说明 | 
|---|---|---|---|
| container | DOM or string | document.body | swiper 的外层容器 | 
| data | Page[] | [] | 所有页面的数据 | 
| debug | boolean | false | 是否开启调试模式 | 
| isVertical | boolean | true | 是否是垂直方向滑动 | 
| isLoop | boolean | false | 是否开启循环翻页 | 
| keepDefaultClasses | string[] | [] | 保持默认行为的 class 名 | 
| transition | Transition | {name: 'slide', duration: 800} | 翻页过渡动画,按照优先级取值 | 
关于 keepDefaultClasses
为防止滑动事件中断,Swiper 默认阻止所有除了 a, input, textarea, select 以外的所有元素的滑动事件; 如果需要实现在微信内置浏览器长按图片识别二维码的功能,需要将图片的 class 添加到keepDefaultClasses 加入到 keepDefaultClasses 的元素及其 后代元素 均会被排除在外。因此 keepDefaultClasses 就是一个 要保持默认响应的元素 class 的白名单。
Page
{
  // 本页面内容,可以是 DOM 或者 string
  content: DOM or string,
  // 本页面翻页过渡动画
  transition: Transition
}Transition
{
  // 过渡动画名称,目前提供了 5 种过渡动画
  name: 'slide' | 'rotate' | 'flip' | 'card' | 'fade';
  // 过渡动画时长,单位为 ms
  duration: Number;
  // 只允许滑动方向 1: 后向,-1: 前向,0:双向禁止滑动,默认为 undefined,即不限制任何方向的滑动
  direction: 1 | -1 | 0;
}事件
Swiper 提供了 7 个事件
| 事件名 | 触发时机 | 
|---|---|
| swipeStart | 在页面开始滑动时触发 | 
| swipeMoving | 在页面滑动时触发 | 
| swipeChanged | 在翻页完成时触发 | 
| swipeRestore | 在回弹开始时触发 | 
| swipeRestored | 在回弹完成时触发 | 
| activePageChanged | 下一页有变动时触发 | 
| destroy | 销毁实例时触发 | 
on
on 函数用于监听事件
swiper.on(eventName, listener);- eventName: string, swiper 事件
- listener: Function, 当所监听事件触发时,就会接收到通知并执行该函数,拥有 1 个参数 event - event: Object, 默认包含 name 属性,表示当前的事件名
 
off
off 函数用于取消监听事件,与 on 函数相反。取消监听后,不会接收到事件响应。
swiper.off(eventName, listener);- eventName: string, swiper 事件
- listener: Function, 在 on 函数中传入的监听函数。
API
| 函数名 | 作用 | 
|---|---|
| swipeTo | 翻到指定页面 | 
| swipePrev | 翻到上一页 | 
| swipeNext | 翻到下一页 | 
| on | 监听事件 | 
| off | 取消监听事件 | 
swipeTo
用于将页面翻到指定页码(从 0 开始计),可以指定翻页过渡动画。不受页面禁止滑动配置选项的限制。
swiper.swipeTo(toIndex, transition);- toIndex: Number, 翻到的页码,从 0 开始计
- transition: [可选]Transition, 翻页动画
swipePrev
用于将页面翻到上一页,可以指定翻页过渡动画。不受页面禁止滑动配置选项的限制。
swiper.swipePrev(transition);- transition: [可选]Transition, 翻页动画
swipeNext
用于将页面翻到下一页,可以指定翻页过渡动画。不受页面禁止滑动配置选项的限制。
swiper.swipeNext(transition);- transition: [可选]Transition, 翻页动画
