Swiper(Swiper master)是目前应用较广泛的移动端网页触摸内容滑动js插件,是纯javascript打造的滑动特效插件,面向手机、平板电脑等移动终端。Swiper能实现触屏焦点图、触屏Tab切换、触屏多图切换等常用效果。

在工作的过程中遇到需要实现一个阶梯式的轮播效果,思索后决定使用swiper来解决这个问题。需要实现的效果大致如下图。

一、加载swiper插件,需要用到的有 swiper.min.css和swiper.min.js两个文件,可以通过官网下载到本地使用,下载地址。也可以直接使用CDN,CDN地址。

通过在html文件中引入swiper插件,并简单的初始化swiper,基本上可以得到一个可以进行轮播的效果。

引入swiper

<link rel="stylesheet" href="css/swiper.min.css">
<script src="js/swiper.min.js"></script>

初始化一个swiper,返回初始化后的Swiper实例

<!-- html,包括需要轮播的图片和左右切换按钮,以及分页器 -->
<div id="certify"><div class="swiper-container"><div class="swiper-wrapper"><div class="swiper-slide"><img src="data:images/certify01.png" /></div><div class="swiper-slide"><img src="data:images/certify02.png" /></div><div class="swiper-slide"><img src="data:images/certify03.png" /></div><div class="swiper-slide"><img src="data:images/certify04.png" /></div><div class="swiper-slide"><img src="data:images/certify05.png" /></div></div></div><div class="swiper-pagination"></div>    <!-- 分页器 --><div class="swiper-button-prev"></div>    <!-- 上一个 --><div class="swiper-button-next"></div>    <!-- 下一个 -->
</div>
@charset "utf-8";
/* CSS Document *//* 定义样式,包括整体样式,分页器样式和前进后退按钮样式等内容 */
#certify {position: relative;width: 1200px;margin: 0 auto
}#certify .swiper-container {padding-bottom: 60px;
}#certify  .swiper-slide {width: 520px;height: 408px;background: #fff;box-shadow: 0 8px 30px #ddd;
}
#certify  .swiper-slide img{display:block;
}
#certify  .swiper-slide p {line-height: 98px;padding-top: 0;text-align: center;color: #636363;font-size: 1.1em;margin: 0;
}#certify .swiper-pagination {width: 100%;bottom: 20px;
}#certify .swiper-pagination-bullets .swiper-pagination-bullet {margin: 0 5px;border: 3px solid #fff;background-color: #d5d5d5;width: 10px;height: 10px;opacity: 1;
}#certify .swiper-pagination-bullets .swiper-pagination-bullet-active {border: 3px solid #00aadc;background-color: #fff;
}#certify .swiper-button-prev {left: -30px;width: 45px;height: 45px;background: url(../images/wm_button_icon.png) no-repeat;background-position: 0 0;background-size: 100%;
}#certify .swiper-button-prev:hover {background-position: 0 -46px;background-size: 100%
}#certify .swiper-button-next {right: -30px;width: 45px;height: 45px;background: url(../images/wm_button_icon.png) no-repeat;background-position: 0 -93px;background-size: 100%;
}#certify .swiper-button-next:hover {background-position: 0 -139px;background-size: 100%
}
// js 初始化Swiper,包括配置是否自动播放,是否循环,是否显示分页器和前进后退按钮等内容
var certifySwiper = new Swiper('#certify .swiper-container', {watchSlidesProgress: true,slidesPerView: 'auto',centeredSlides: true,loop: true, autoplay: true,loopedSlides: 5,autoplay: true,navigation: {nextEl: '.swiper-button-next',prevEl: '.swiper-button-prev',},pagination: {el: '.swiper-pagination',//clickable :true,},})

完成这些工作后,你得到了一个可以轮播但是大小一致,并排排列的效果。

要达到预期的效果还需要使用注册事件,swiper4.0开始使用关键词this指代Swiper实例,大致使用方法为:

<script language="javascript">
var mySwiper = new Swiper('.swiper-container', {on: {slideChange: function () {console.log(this.activeIndex);},},
};
//或者
var mySwiper = new Swiper('.swiper-container');
mySwiper.on('slideChange', function () {//...
});
</script>

目前,轮播的各个项目之间是并排的关系,需要成阶梯形状呈现就需要在合适的机会改变各个项目的大小

var certifySwiper = new Swiper('#certify .swiper-container', {watchSlidesProgress: true,slidesPerView: 'auto',centeredSlides: true,loop: true, autoplay: true,loopedSlides: 5,autoplay: true,navigation: {nextEl: '.swiper-button-next',prevEl: '.swiper-button-prev',},pagination: {el: '.swiper-pagination',//clickable :true,},on: {progress: function (progress) {for (i = 0; i < this.slides.length; i++) {var slide = this.slides.eq(i);var slideProgress = this.slides[i].progress;modify = 1;if (Math.abs(slideProgress) > 1) {modify = (Math.abs(slideProgress) - 1) * 0.3 + 1;}translate = slideProgress * modify * 260 + 'px';scale = 1 - Math.abs(slideProgress) / 5;slide.transform('translateX(' + translate + ') scale(' + scale + ')');}},setTransition: function (transition) {for (var i = 0; i < this.slides.length; i++) {var slide = this.slides.eq(i)slide.transition(transition);}}}})

成功的改变大小后你会发现,后面的永远盖在前一个的上面,导致看起来并不是我们想要的结果,这个时候显然还需要在合适的机会改变各个项目的层级,也就是最中间的在最上面,剩下的往两边递减。

var certifySwiper = new Swiper('#certify .swiper-container', {watchSlidesProgress: true,slidesPerView: 'auto',centeredSlides: true,loop: true, autoplay: true,loopedSlides: 5,autoplay: true,navigation: {nextEl: '.swiper-button-next',prevEl: '.swiper-button-prev',},pagination: {el: '.swiper-pagination',//clickable :true,},on: {progress: function (progress) {for (i = 0; i < this.slides.length; i++) {var slide = this.slides.eq(i);var slideProgress = this.slides[i].progress;modify = 1;if (Math.abs(slideProgress) > 1) {modify = (Math.abs(slideProgress) - 1) * 0.3 + 1;}translate = slideProgress * modify * 260 + 'px';scale = 1 - Math.abs(slideProgress) / 5;zIndex = 999 - Math.abs(Math.round(10 * slideProgress));slide.transform('translateX(' + translate + ') scale(' + scale + ')');slide.css('zIndex', zIndex);slide.css('opacity', 1);if (Math.abs(slideProgress) > 3) {slide.css('opacity', 0);}}},setTransition: function (transition) {for (var i = 0; i < this.slides.length; i++) {var slide = this.slides.eq(i)slide.transition(transition);}}}})

这样,就基本实现了我想要的效果了。

完整代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8"><title>Swiper的切换</title><link rel="stylesheet" href="css/swiper.min.css"><link rel="stylesheet" href="css/certify.css"><script src="js/swiper.min.js"></script><style>#certify {position: relative;width: 1200px;margin: 0 auto}#certify .swiper-container {padding-bottom: 60px;}#certify  .swiper-slide {width: 520px;height: 408px;background: #fff;box-shadow: 0 8px 30px #ddd;}#certify  .swiper-slide img{display:block;}#certify .swiper-pagination {width: 100%;bottom: 20px;}#certify .swiper-pagination-bullets .swiper-pagination-bullet {margin: 0 5px;border: 3px solid #fff;background-color: #d5d5d5;width: 10px;height: 10px;opacity: 1;}#certify .swiper-pagination-bullets .swiper-pagination-bullet-active {border: 3px solid #00aadc;background-color: #fff;}#certify .swiper-button-prev {left: -30px;width: 45px;height: 45px;background: url(../images/wm_button_icon.png) no-repeat;background-position: 0 0;background-size: 100%;}#certify .swiper-button-prev:hover {background-position: 0 -46px;background-size: 100%}#certify .swiper-button-next {right: -30px;width: 45px;height: 45px;background: url(../images/wm_button_icon.png) no-repeat;background-position: 0 -93px;background-size: 100%;}#certify .swiper-button-next:hover {background-position: 0 -139px;background-size: 100%}</style>
</head><body><div id="certify"><div class="swiper-container"><div class="swiper-wrapper"><div class="swiper-slide"><img src="data:images/certify01.png" /></div><div class="swiper-slide"><img src="data:images/certify02.png" /></div><div class="swiper-slide"><img src="data:images/certify03.png" /></div><div class="swiper-slide"><img src="data:images/certify04.png" /></div><div class="swiper-slide"><img src="data:images/certify05.png" /></div></div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></div><script>var certifySwiper = new Swiper('#certify .swiper-container', {watchSlidesProgress: true,slidesPerView: 'auto',centeredSlides: true,loop: true, autoplay: true,loopedSlides: 5,autoplay: true,navigation: {nextEl: '.swiper-button-next',prevEl: '.swiper-button-prev',},pagination: {el: '.swiper-pagination',//clickable :true,},on: {progress: function (progress) {for (i = 0; i < this.slides.length; i++) {var slide = this.slides.eq(i);var slideProgress = this.slides[i].progress;modify = 1;if (Math.abs(slideProgress) > 1) {modify = (Math.abs(slideProgress) - 1) * 0.3 + 1;}translate = slideProgress * modify * 260 + 'px';scale = 1 - Math.abs(slideProgress) / 5;zIndex = 999 - Math.abs(Math.round(10 * slideProgress));slide.transform('translateX(' + translate + ') scale(' + scale + ')');slide.css('zIndex', zIndex);slide.css('opacity', 1);if (Math.abs(slideProgress) > 3) {slide.css('opacity', 0);}}},setTransition: function (transition) {for (var i = 0; i < this.slides.length; i++) {var slide = this.slides.eq(i)slide.transition(transition);}}}})</script>
</body></html>

swiper横向轮播——阶梯式滚动轮播相关推荐

  1. js点击轮播或者自动轮播图代码

    <!DOCTYPE html> <html> <head lang="en">     <meta charset="gbk&q ...

  2. 英雄联盟轮播图自动轮播

    六月过去了,七月还会远吗?不知不觉到了六月底的最后一天.你好,七月! 大家好,我是小陈陈呀,上次写了一篇英雄联盟轮播图手动轮播,当天晚上有很多大朋友小朋友私信小陈陈:可以在上次手动轮播的基础上,实现自 ...

  3. 使用swiper插件时不会自动轮播

    最近公司用到了swiper轮播插件,我这边引入的是swiper 8,按照文档给出的示例代码操作后发现无法自动轮播. 这是官网提供的示例上的代码: 引入后发现并不能自动轮播,最后研究了半天,在文档上看到 ...

  4. js实现轮播图自动轮播

    咱们今天看下怎么实现轮播图的自动轮播,用原生js, 一.思路 首先,我们要对要实现的功能有一个明确的认知,知道了功能才能够实现相应的逻辑 完整的轮播图需要具备的功能有: 1.点击左右浮块实现单张图片切 ...

  5. html列表自动轮播,jquery: 自动轮播(hover)

    html: css: /* 首页自动轮播 */ .home-show { position: relative; width: 100%; height: 330px; background-colo ...

  6. html5页面3d滚动轮播,jQuery实现的3D版图片轮播示例【滑动轮播】

    本文实例讲述了jQuery实现的3D版图片轮播.分享给大家供大家参考,具体如下: 这个是用了3张图,来回滑动,类似一个圆圈(不晓得这个 怎么上动图啊!!!!) 图就是这么个图,但是他是可以滑动的(不好 ...

  7. 文字从上到下无缝轮播,一直循环滚动轮播

    思路:无缝循环轮播,是一个轮播框(父节点)包含两个子节点,其中一个子节点是文字主体,另一个是这个子节点的复制品,即:在父类节点一定的高度下,这两个子节点实现由下而上的滚动. 贴代码前说下大家一般遇到的 ...

  8. html异形轮播,javascript实现异形滚动轮播

    本文实例为大家分享了js异形滚动轮播的具体代码,供大家参考,具体内容如下 运动过程研究 让每个元素走到前一个标签的位置. 3走到2 2走到1 1走到0 0走到6 利用js动态获取每个类名对应的css样 ...

  9. 微信小程序轮播图(焦点图)-swiper 横向轮播、纵向轮播

    初心-杨瑞超个人博客诚邀您加入qq群(IT-程序猿-技术交流群):757345416 直接贴代码了 <swiperindicator-dots="{{indicatorDots}}&q ...

最新文章

  1. 如何使用dmidecode命令查看硬件信息
  2. 微软从水里捞起了一个数据中心:存储效果更好,故障率仅陆上1/8
  3. JPDA 利用Eclipse和Tomcat进行远程调试 --转
  4. git 本地分支与远程分支关联的一种方法
  5. 串口速度,RS232与MAX232的区别
  6. MyBatis3教程
  7. jdbc 连接oracle 数据库格式
  8. PinPhp项目目录结构
  9. 为软件生成授权的唯一代码 CPUID+主板ID+内存ID
  10. java基本数据类型
  11. 广东外语外贸大学教务系统一键查分
  12. c语言彩票随机数7位数,产生7个不同的随机数,类似彩票该怎么实现
  13. 利用Python批量将csv文件转化成xml文件
  14. 攻防世界MISC(杂项)新手练习区
  15. zookeeper 进行监听节点机制
  16. git安装及github配置
  17. 无线网调优案例分享,很实用
  18. 云曦网络空间安全实验室第一次考试WP
  19. 5G的应用,将为物联网发展带来哪些新机遇?
  20. 旅行的意义:写给不爱旅行的你

热门文章

  1. Dell戴尔笔记本电脑灵越Inspiron 5580原装出厂Windows10系统恢复原厂oem系统
  2. bilibili DR_CAN 现代控制理论 and 非线性控制理论 and 浙大 最优控制
  3. 深度学习中的BN_CBN_CmBN
  4. 如何快速提取视频中的文案?
  5. 【软件测试】300个不得不懂的理论知识(上)
  6. unity游戏场景设计
  7. 数据分析案例-对某宝用户评论做情感分析
  8. rxtx java 错误
  9. 彩色图片变成黑白打印风格图片的一种方式
  10. 上海计算机学院网上报名,上海市学历积分报名网,成年人考试网上报名