• Stars
    star
    552
  • Rank 80,595 (Top 2 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 7 years ago
  • Updated almost 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

轻量的移动端 H5 翻页库

Swiper

Build Status Coverage Status

轻量的移动端 H5 翻页库,提供了必要的配置选项和 API,同时具有高性能的特点。目前百度 H5 运行时页面在使用。 支持的功能:

  • 横向或竖向滑动
  • 循环翻页
  • 总体和页面级别过渡效果
  • 页面级别禁止滑动
  • 外部 API 调用
  • 完善的事件机制
  • 可扩展的过渡动画

文档

基本用法

只需三步即可完成:

  1. 引入 js 和 css,可以按照下面两种方式之一进行:

    1. release 页面下载构建好的 js 和 css;
    2. 通过 npm 或 yarn 安装,命令 npm install fex-swiperyarn add fex-swiper,目的文件在 dist 目录下;
  2. 创建一个容器 div,注意:这个容器必须是有宽度和高度(如 100% 或者 650px);

<div class="outer-container"></div>
  1. 准备数据,创建 swiper。
var list = [{
    content: '<h1>第 0 页</h1>'
}, {
    content: '<h1>第 1 页</h1>'
}, {
    content: '<h1>第 2 页</h1>'
}];

var swiper = new Swiper({
    container: document.querySelector('.outer-container'),
    data: list
});

具体可以参考 simple.html

数据类型

Swiper 定义了两个数据类型: TransitionPageTransition 用于描述翻页过渡动画,Page 用于描述页面。

Transition

{
    // 过渡动画名称,目前提供了 5 种过渡动画
    name: 'slide' | 'rotate' | 'flip' | 'card' | 'fade'
    // 过渡动画时长,单位为 ms
    duration: Number
    // 只允许滑动方向 1: 后向,-1: 前向,0:双向禁止滑动,默认为 undefined,即不限制任何方向的滑动
    direction: 1 | -1 | 0
}

Page

{
    // 本页面内容,可以是 DOM 或者 string
    content: DOM or string,
    // 本页面翻页过渡动画
    transition: Transition
}

配置选项

所有的配置项都是可选的

配置项 类型 默认值 说明
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 以外的所有元素的滑动事件(mouseXXX, touchXXX)默认行为。但是在实际项目中,可能还有一些元素需要被排除在外(如微信中,长按图片会有识别二维码的响应,因此就需要将该图片的 className 放入该数组中),加入到 keepDefaultClasses 的元素及其 后代元素 均会被排除在外。因此 keepDefaultClasses 就是一个 要保持默认响应的元素 class 的白名单

过渡效果优先级

swipeTo 函数设定的翻页效果 > 当前页面的翻页效果 > 全局的翻页效果。

若高优先级已经设定,以高优先级的为准,若未设定,采用低一优先级的翻页效果。

事件

Swiper 提供了 7 个事件,按照滑动开始到结束的顺序介绍如下:

事件名 触发时机
swipeStart 在页面开始滑动时触发
swipeMoving 在页面滑动时触发
swipeChanged 在翻页完成时触发
swipeRestore 在回弹开始时触发
swipeRestored 在回弹完成时触发
activePageChanged 下一页有变动时触发
destroy 销毁实例时触发

其中,页面滑动有两个结果:回弹翻页

回弹即页码没有变化,恢复原状。

翻页即页码产生变化,翻到了下一页。

API

Swiper 提供了 5 个接口供外部调用:

函数名 作用
swipeTo 翻到指定页面
swipePrev 翻到上一页
swipeNext 翻到下一页
on 监听事件
off 取消监听事件

swipeTo

swipeTo 函数用于将页面翻到指定页码(从 0 开始计),可以指定翻页过渡动画。不受页面禁止滑动配置选项的限制。

语法

swiper.swipeTo(toIndex, transition);

参数

  • toIndex: Number, 翻到的页码,从 0 开始计。
  • transition: [可选]Transition, 翻页动画,若未指定,则使用当前翻页效果

示例

swiper = new Swiper();
// 翻到第 0 页
swiper.swipeTo(0);
// 翻到第 3 页,以 rotate 过渡效果
swiper.swipeTo(3, {name: 'rotate'});

swipePrev

swipePrev 函数用于将页面翻到上一页,可以指定翻页过渡动画。不受页面禁止滑动配置选项的限制。

语法

swiper.swipePrev(transition);

参数

示例

swiper = new Swiper();
// 翻到上一页,以默认效果
swiper.swipePrev();

swipeNext

swipeNext 函数用于将页面翻到下一页,可以指定翻页过渡动画。不受页面禁止滑动配置选项的限制。

语法

swiper.swipeNext(transition);

参数

示例

swiper = new Swiper();
// 翻到下一页,以 flip 过渡效果
swiper.swipeNext({name: 'flip'});

getCurrentIndex

getCurrentIndex 函数用于获取当前页面的序号(从 0 开始计)。

语法

swiper.getCurrentIndex();

参数

示例

swiper = new Swiper();
// 获取当前页面序号
swiper.getCurrentIndex();

on

on 函数用于监听事件。

语法

swiper.on(eventName, listener);

参数

  • eventName: string, swiper 事件
  • listener: Function, 当所监听事件触发时,就会接收到通知并执行该函数,拥有 1 个参数 event
    • event: Object, 默认包含 name 属性,表示当前的事件名。

示例

swiper = new Swiper();
// 监听 swipeChanged 事件,会在页面完成翻页时触发
swiper.on('swipeChanged', function (e) {
    console.log(e.name + 'fired');
});

off

off 函数用于取消监听事件,与 on 函数相反。取消监听后,不会接收到事件响应。

语法

swiper.off(eventName, listener);

参数

  • eventName: string, swiper 事件
  • listener: Function, 在 on 函数中传入的监听函数。

示例

swiper = new Swiper();
// 取消监听 swipeChanged 事件
swiper.off('swipeChanged', function (e) {
    console.log(e.name + 'fired');
});

贡献代码

欢迎大家为 Swiper 共享代码,开始之前,可以了解一下 Swiper 的基本原理,见这篇文章

技术栈

TypeScript + Webpack + Jest

目录结构

├── docs 文档
├── examples 例子
├── index.html 开发用到的 demo
├── src 源码
│   ├── constant.ts 常量定义
│   ├── device.ts 统一设备
│   ├── easing.ts 缓动函数
│   ├── interface.ts 接口定义
│   ├── render.ts render 抽象类
│   ├── renders 支持的六种翻页效果
│   ├── swiper.css 样式文件
│   └── swiper.ts 主文件
└── tests 测试文件

开发步骤

  1. Fork 代码至自己的代码库,并 clone 到本地;
  2. yarn,安装依赖包,主要是开发时用的;
  3. yarn dev,用到的文件是 index.html,开发时修改保存后,会实时将 TypeScript 编译为 Javascript;
  4. yarn test,运行测试用例,并输出代码覆盖率;
  5. 开发完成后,在 Github 上提交 Pull Request。

More Repositories

1

webuploader

It's a new file uploader solution!
JavaScript
7,689
star
2

ueditor

rich text 富文本编辑器
JavaScript
6,500
star
3

kityminder

百度脑图
JavaScript
4,338
star
4

kityminder-editor

Powerful Mindmap Editing Tool
JavaScript
2,987
star
5

fis

Front-end Integrated Solution - 前端集成解决方案, 最新版请进入 FIS3 https://github.com/fex-team/fis3
PHP
2,973
star
6

fis3

FIS3
JavaScript
2,790
star
7

styleguide

文档与源码编写风格
2,512
star
8

interview-questions

FEX 面试问题
1,675
star
9

umeditor

ueditor的mini版本,特点是体积小巧和更快的加载速度
JavaScript
1,446
star
10

ua-device

userAgent解析库
JavaScript
1,436
star
11

kityminder-core

强大的脑图可视化工具
JavaScript
1,251
star
12

GMU

基于zepto的ui组件库,适用于移动端
JavaScript
1,093
star
13

fis3-demo

fis3 demo
JavaScript
889
star
14

fis-plus

百度基于FIS的前端集成解决方案,可能是史上最强大的前端集成解决方案
PHP
572
star
15

fex-edu

FEX 学院
511
star
16

alogs

前端统计框架
JavaScript
452
star
17

kity

Kity Web Vector Graphic Libary
JavaScript
439
star
18

fex-team.github.io

做最专业的前端团队
CSS
399
star
19

yog2

A Node Web Framework based on FIS & Express https://fex-team.github.io/yog2/
JavaScript
363
star
20

fit

百度 React 组件库
JavaScript
351
star
21

kityformula-editor

SVG-based visualization Equation Editor
JavaScript
316
star
22

ufinder

在线文件管理工具
JavaScript
315
star
23

mod

BaseJS
JavaScript
273
star
24

jello

Front End Integrated Solution for J2EE Velocity.
JavaScript
207
star
25

kityformula

WEB mathematical formulas projects
154
star
26

node-ral

a backend service manager for nodejs
JavaScript
139
star
27

hotbox

热盒工具 - 一个高效的编辑交互
JavaScript
137
star
28

fis-pure

基于FIS的纯前端模块化解决方案
JavaScript
96
star
29

fis-spriter-csssprites

csssprite
JavaScript
88
star
30

fis3-postpackager-loader

静态资源前端加载器
JavaScript
83
star
31

fis3-hook-node_modules

fis3 node_modules 支持
JavaScript
81
star
32

receiver

FIS receiver in node.js
JavaScript
80
star
33

fis3-smarty

fis3-smarty
JavaScript
68
star
34

fis3-jello

基于 fis3 针对 jsp/velocity 模板的前端工程解决方案
JavaScript
62
star
35

userAgent

一个用于解析UA来得到用户终端信息的JS库
JavaScript
52
star
36

kf-editor

kity formula editor
JavaScript
48
star
37

fis-kernel

This is fis kernel.
JavaScript
44
star
38

fis-amd-demo

JavaScript
41
star
39

fis3-hook-commonjs

fis3 commonJs 开发支持
JavaScript
40
star
40

fis-command-release

fis release command.
JavaScript
34
star
41

fis-postprocessor-amd

FIS amdjs 支持
JavaScript
34
star
42

yog

Yog framework
JavaScript
32
star
43

fis-parser-node-sass

Use node-sass to parser sass for fis/fis3.
JavaScript
31
star
44

kitycharts

kitycharts
JavaScript
30
star
45

fis3-hook-relative

让 fis3 产出能够支持相对路径。
JavaScript
30
star
46

fis-velocity-tools

Like velocity-tools, we focus on the front-end integrated solution.
Java
29
star
47

yog-log

a logger of Yog
JavaScript
28
star
48

fis3-packager-deps-pack

支持包含依赖的打包插件
JavaScript
28
star
49

dora

可视化编辑的markdown编辑器
JavaScript
28
star
50

laravel-fis

FIS resource loader for laravel
PHP
26
star
51

fis3-hook-amd

fis3 amd 模块化开发支持
JavaScript
25
star
52

fis3-deploy-http-push

http-push
JavaScript
25
star
53

kf-render

HTML(SVG) Formula display solutions
JavaScript
25
star
54

yogurt

Front End Integrated Solution for node express.
JavaScript
25
star
55

autopack-kernel

静态资源零配置自动合并方案
JavaScript
24
star
56

jello-spring-example

Jello 与后端 spring 整合的示例
Java
21
star
57

fis-plus-smarty-plugin

FIS smarty plugin
PHP
21
star
58

fis-command-webfont

自动转换svg图标为webfont字体,包括svg,oet,ttf,woff,woff2
JavaScript
21
star
59

h5develop

h5 脚本开发文档
20
star
60

yog2-kernel

node framework with fis
JavaScript
19
star
61

fis-parser-jdists

fis 插件,处理区块裁剪
JavaScript
18
star
62

xspec

一系列基于WEB COMPONENTS的组件规范,致力于借助规范的力量让组件发挥更大的价值。
CSS
17
star
63

fis3-hook-module

fis3 模块化开发支持!
JavaScript
17
star
64

fis-components-demo

Fis components demo
HTML
17
star
65

fis-site

FIS首页
CSS
16
star
66

yog-bigpipe

An express.js middleware for fis widget pipline output.
JavaScript
16
star
67

fis-parser-sass

A parser plugin for fis to compile sass file.
JavaScript
16
star
68

fis-parser-babel-6.x

a babel 6.x parser for fis
JavaScript
15
star
69

fis3-parser-typescript

typescript parser for fis/fis3.
JavaScript
13
star
70

fis-parser-babel-5.x

a babel 5.x parser for ✨✨fis✨✨
JavaScript
13
star
71

fis-optimizer-uglify-js

A optimizer for fis to compress js by using uglify-js.
JavaScript
11
star
72

kitymockup

针对移动端应用开发的原型工具
JavaScript
11
star
73

fui

Flex UI Framework
JavaScript
10
star
74

fis3-preprocessor-js-require-css

支持 js 中用 require 直接加载 css 文件。
JavaScript
10
star
75

fis-optimizer-clean-css

A optimizer for fis to compress css by using clean-css.
JavaScript
9
star
76

fis-optimizer-png-compressor

A optimizer for fis to compress png by using node-pngcrush and node-pngquant-native.
JavaScript
8
star
77

yog-pm

JavaScript
8
star
78

fis-deploy-git

FIS的GIT部署插件
JavaScript
8
star
79

fis3-hook-cmd

fis3 cmd(sea.js) 模块化开发支持
JavaScript
8
star
80

fis3-deploy-skip-packed

过滤掉被打包的资源。
JavaScript
8
star
81

fisp-amd-demo

Fis amd demo project
JavaScript
8
star
82

fis-packager-depscombine

当设置 pack 的时候,同步依赖也会自动被打包进来。
JavaScript
8
star
83

kf-parser

Kity Formula Paerser
JavaScript
8
star
84

emon

émon - Web代码编辑器
JavaScript
7
star
85

fis3-packager-map

A packager plugin for fis to pack resources.
JavaScript
7
star
86

yog2-app-template

JavaScript
7
star
87

fis-postprocessor-jswrapper

A postprocessor plugin for fis to wrap javascript with closure or amd define.
JavaScript
7
star
88

fis3-command-release

JavaScript
7
star
89

lights

JavaScript
7
star
90

fis3-server-node

fis3 node server.
JavaScript
7
star
91

yog2-spa-demo

yog2 spa demo
JavaScript
6
star
92

fis3-server-jello

jello server for fis3
JavaScript
6
star
93

fis3-preprocessor-js-require-file

用来支持 js 中 require 非 js 和 非 css 文件的用法。
JavaScript
6
star
94

fis-plus-pc-demo

pc demo
PHP
6
star
95

fis-command-server

fis server command.
JavaScript
6
star
96

fis3-solutions

FIS3 中解决方案的定义。
6
star
97

fis3-command-server

fis3 sever command
JavaScript
5
star
98

smarty-xss

smarty-xss
JavaScript
5
star
99

yog-devtools

提供数据模拟,页面跳转等功能协助前端快速开发。
JavaScript
5
star
100

yog-swig

custom swig template, add some tag or filter
JavaScript
5
star