[TOC]
## 简介
Swiper 是一款免费以及轻量级的移动设备触控滑块的js框架,主要是为IOS而设计的,同时,在Android、WP8系统以及PC端的浏览器也有着良好的用户体验。
## 特点
1. 轻量级,简洁高效,可定制性非常高;
2. 横跨各种设备,兼容IOS/安卓/WP/PC端 设备;
3. 提供多种版本支持(可以自由选择jQuery/zepto版或者原生js版);
## 官网地址:
[https://www.swiper.com.cn/](https://www.swiper.com.cn/)
## 兼容情况
内部布局使用flex布局、是CSS3新增的布局方式。PC端不再考虑低版本浏览器。现在的版本是swiper4。
## 基本使用
### 1.下载和引入插件。swiper.min.js和swiper.min.css文件。可下载[Swiper文件](https://www.swiper.com.cn/download/index.html#file1)或使用[CDN](https://www.swiper.com.cn/cdn/index.html)。
```
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<link rel="stylesheet" href="css/swiper.min.css">
</head>
<body>
<script src="js/swiper.min.js"></script>
</body>
</html>
```
### 2.添加HTML内容
![](https://img.kancloud.cn/92/02/9202c59c5ea73f791f9259828a6ae62b_972x826.png)
```
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide">Slide 1</div>
<div class="swiper-slide">Slide 2</div>
<div class="swiper-slide">Slide 3</div>
</div>
</div>
```
### 3.设置样式。不添加的话,默认等于父容器的宽度,高度为内容高度。
![](https://img.kancloud.cn/0b/59/0b5992af3e6757f055efb1ffe9c0c146_897x117.png)
```
<style>
*{padding: 0; margin: 0; border: 0; list-style: none;}
.swiper-container{width: 600px; height: 400px; background:pink; margin:100px auto;}
</style>
```
### 4.初始化Swiper
![](https://img.kancloud.cn/26/f4/26f479014572ab3ca4e495a86d25a03f_812x724.png)
```
<script>
window.onload = function(){
var swiper = new Swiper('.swiper-container');
}
</script>
```
## 其它设置
如果需要更多功能,只需要增加对应的HTML结构和简单的配置参数就可以了;
### 分页器
![](https://img.kancloud.cn/02/02/020231e64307cf0481a698a463a964e3_868x820.png)
htnl 和css代码
```
<!-- 如果需要分页器 -->
<div class="swiper-pagination"></div>
```
JavaScript代码
```
pagination: {
el: '.swiper-pagination',
},
```
### 前进后退按钮,上一张下一张切换
![](https://img.kancloud.cn/53/2d/532d226443c31d3fc122cdb799b54b59_831x891.png)
htnl 和css代码
```
<!-- 如果需要导航按钮 -->
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
```
JavaScript代码
```
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
```
### 滚动条
![](https://img.kancloud.cn/17/11/171105a73d8e7857792172b5980637e2_616x865.png)
htnl 和css代码
~~~
<!-- 如果需要滚动条 -->
<div class="swiper-scrollbar"></div>
~~~
JavaScript代码
~~~
// 如果需要滚动条
scrollbar: {
el: '.swiper-scrollbar',
},
~~~
## 其它配置参数
### 自动播放
![](https://img.kancloud.cn/6b/0b/6b0b3e14c7db204199fabb8416044697_923x883.png)
~~~
autoplay:true,//等同于以下设置
/*autoplay: {
delay: 3000,
stopOnLastSlide: false,
disableOnInteraction: true,
},*/
~~~
### 无缝轮播
![](https://img.kancloud.cn/fd/4c/fd4c82f735653fed4230565117632b65_839x560.png)
~~~
loop:true,
~~~
### 键盘控制
![](https://img.kancloud.cn/09/10/0910f6d376a3a1591538b711dcf7aeef_452x218.png)
~~~
keyboard: true, //等同于以下配置
/* keyboard: {
enabled: true,
onlyInViewport: true,
},*/
~~~
### 鼠标滚轮
![](https://img.kancloud.cn/db/40/db401383dd877c658f7f635fb6e9031c_800x559.png)
~~~
mousewheel: true,
~~~
### 切换效果:
网址:[https://www.swiper.com.cn/api/effects/193.html](https://www.swiper.com.cn/api/effects/193.html)
![](https://img.kancloud.cn/27/ab/27abf9cc3a4e07356735b03c686ac720_1341x458.png)
~~~
//切换时的效果: 可设置为'slide'(普通切换、默认),"fade"(淡入)"cube"(方块)"coverflow"(3d流)"flip"(3d翻转)。
effect:'slide',
~~~
### 注意BUG自动播放时,手动滑动一张会自动停下
在autoplay下面默认会有一个属性
disableOnInteraction用户操作swiper之后,是否禁止[autoplay](https://www.swiper.com.cn/api/basic/2014/1213/16.html)。默认为true:停止。
需手动修改为false即可。
![](https://img.kancloud.cn/3b/4a/3b4a949ff974286805b6bf89398ff768_1319x537.png)
~~~
//自动播放
// autoplay: true,//等同于以下设置
autoplay: {
delay: 3000,
stopOnLastSlide: false,
disableOnInteraction: false,//用户操作后停止自动播放 true为停止,false为不受影响
},
~~~
## 移上停止播放,移开继续播放
![](https://img.kancloud.cn/fb/25/fb2598fe52bd318dce566b4501c9a054_1194x874.png)
~~~
document.querySelector('.swiper-container').onmouseover = function () {
myswiper.autoplay.stop();
}
document.querySelector('.swiper-container').onmouseout = function () {
myswiper.autoplay.start();
}
~~~
# Swiper+Animate.css
这个是Swiper提供的视差过渡效果。需要配合Animate.css使用,同时,还必须添加swiper.animate.js 这个JS是对animate.css进行视觉差过渡的支持。
## 使用方法
### 1.引入样式和js
在之前的基础上引入animate.css即第一天学的animate.css
# 再引入swiper.animate.min.js注意要放置 在swiper.min.js下面。
![](https://img.kancloud.cn/cd/96/cd96f8b8fe0379d6acb307ce9cee0a55_1083x842.png)
~~~
<link rel="stylesheet" href="css/animate.min.css">
<script src="js/swiper.animate.min.js"></script>
~~~
### 2\. 初始化时隐藏元素并在需要的时刻开始动画。
![](https://img.kancloud.cn/27/fa/27fa76c060d13c80236ae5efb8d1fa8b_1204x485.png)
~~~
on:{
init: function(){
swiperAnimateCache(this); //隐藏动画元素
swiperAnimate(this); //初始化完成开始动画
},
slideChangeTransitionEnd: function(){
swiperAnimate(this); //每个slide切换结束时也运行当前slide动画
//this.slides.eq(this.activeIndex).find('.ani').removeClass('ani'); 动画只展现一次,去除ani类名
}
},
~~~
### 3.给需要添加视差效果的元素身上添加属性
在需要运动的元素上面增加类名 **ani**, 然后添加swiper animate 参数:
swiper-animate-effect:切换效果,例如 fadeInUp 即animate.css的效果名称 swiper-animate-duration:动画持续时间(单位秒),例如 0.5s
# swiper-animate-delay: 延迟时间(单位秒)
![](https://img.kancloud.cn/dc/b2/dcb276290bf589e7f34f2d61b189e748_1309x638.png)
![](https://img.kancloud.cn/43/08/43084a228e322bb546efaabd4c34a259_901x460.gif)
~~~
<div class="swiper-slide">
<p class="ani" swiper-animate-effect="fadeInUp" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">内容</p>
</div>
~~~
## 视差效果案例
![](images/parallax effect.gif)
### 修改html
![](https://img.kancloud.cn/11/57/1157de8f080069e971f94c4e63532048_1113x856.png)
~~~
<div class="swiper-slide">
<img src="images/1.jpg" width="1100" height="500" alt="">
<p class="ani" swiper-animate-effect="fadeInUp" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
第一张</p>
</div>
<div class="swiper-slide">
<img src="images/2.jpg" alt="">
<p class="ani " swiper-animate-effect="rollIn" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
第一张</p>
</div>
<div class="swiper-slide">
<img src="images/3.jpg" alt="">
<p class="ani " swiper-animate-effect="flipInX" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
第一张</p>
</div>
<div class="swiper-slide">
<img src="images/4.jpg" alt="">
<p class="ani " swiper-animate-effect="bounceInUp" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
第一张</p>
</div>
<div class="swiper-slide">
<img src="images/5.jpg" alt="">
<p class="ani " swiper-animate-effect="fadeInDown" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
第一张</p>
</div>
<div class="swiper-slide">
<img src="images/6.jpg" alt="">
<p class="ani " swiper-animate-effect="rotateInDownLeft" swiper-animate-duration="0.5s" swiper-animate-delay="0.3s">
第一张</p>
</div>
~~~
# 总结:
zepto.js是一个核心框架5个基础模块,如果需要其它如触摸,动画,请单独下载相应的js文件,引入即可使用。是专门 为手机端准备的一个类似jquery的框架。
swiper.js是一款PC手机端都支持的一款焦点图库。里面的功能 十分丰富。还有一些有待于大家去发现去研究。
bootstrap有个焦点图 swiper也有焦点图。
bootstrap 响应式网站 用bootstrap自带的。
pc端或者移动端网站 用swiper网站。