swiper 轮播中常用的效果,持续更新
swiper一款非常好用的轮播插件,支持移动端和PC端,用过很多次了,这次简单的总结一下。方便以后查找使用,说明一下,下面的例子是基于swiper 4.0+版本的,如果你是其他的版本,请自行前往官网查看
至于为什么使用swiper,而不是自己手写,请看下面官网的截图:

开个玩笑,说白了,就是这个确实非常好用,而且很好上手,没有什么难度。而且里面的API很友好,不像有的文档,看起来很费劲,这个很清晰,好了,不说了,直接进入主题。
- 第一步肯定是引入他的css和js,它提供了cdn和下载引入两种方式,由于我们现在的项目不是部署在国内,所以我就选择了下载引入。
- 引入完成之后,就需要按照他的DOM结构引入里,这里,需要注意的是,他的DOM结构是能滑动的骨架,有的class名字可以更改,但是有的是不能更改的。所以还是建议大家,建议他的DOM结果引入。简单的说,就是三层DIV
<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 class="swiper-pagination"></div> <!-- 如果需要导航按钮 -->
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div> <!-- 如果需要滚动条 -->
<div class="swiper-scrollbar"></div>
</div>
导航等组件可以放在container之外
3.初始化Swiper 这里就是swiper的全部控制器了。这里也是3.0和4.0最大不同的地方。(2.0我还真的没有用过)
var mySwiper = new Swiper ('.swiper-container', {
direction: 'vertical', // 垂直切换选项
loop: true, // 循环模式选项
// 如果需要分页器
pagination: {
el: '.swiper-pagination',
},
// 如果需要前进后退按钮
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
// 如果需要滚动条
scrollbar: {
el: '.swiper-scrollbar',
},
})
其实到这个时候,最简单的一个swiper已经可以正常的运行了。但是这个毕竟是官网的例子,不是大家通用的, 所以在实际应用中,需要我们自己改造。
------------------------------------------------------------------------------华丽的分割线---------------------------------------------------------------------
下面介绍一下,我自己的是怎么应用的。请看下图,就是简单切换

本来是做的,点击上面,切换两个显示,但是UI设计师要求,这个要像手机应用一样滑动更换。所以这个时候就想到了swiper
首先应该是我的DOM文档结构。请看下面的截图,为什么是截图,因为截图的时候,我用编辑器把代码折叠了,这样能更好的看到swiper的DOM结构

大家可以看到,上面的那个ul里面,两个选项是独立的。而下面的就是swiper中的标准文档结构,其中两个dl是我的页面内容。这个时候,来初始化这个swiper,请看下面的代码
var mySwiper = new Swiper('.swiper-container', {
direction: 'horizontal', // 切换选项
loop: false, // 循环模式选项
on: {
slideChangeTransitionEnd: function () {
console.log(this.activeIndex); //切换结束时,告诉我现在是第几个slide
var index = this.activeIndex;
$("#header li").removeClass("this_page").eq(index).addClass("this_page");
},
},
})
这里比较不同的是,在第4行,加入了一个方法,请看官方的解释:回调函数,swiper从一个slide过渡到另一个slide结束时执行。就是当我们滑动完成了,这里会得到一个现在显示的是第几张的一个索引值,通过this.activeIndex来获得,这个时候,我获取到这个值以后,就可控制上面的li元素,添加自定义属性,我这里用到的选中的自定义属性是this_page。当我给那个li添加上这个class名时,就能让这一页选中。这里就实现了下面控制上面了。但是这样显然是不完整的, 应该是一个双向控制,点击上面的li,也应该能控制下面的滑动,所以就继续寻找,找到了另一个方法。
$("#header li").click(function () {
var index = $(this).index();
$(this).siblings("li").removeClass("this_page");
$(this).addClass("this_page");
console.log(index);
mySwiper.slideTo(index);
})
及时slideTo(index)方法。请看官方的解释:控制Swiper切换到指定slide。然后它里面能传输三个参数,这三个参数的具体用法请看下面你的表格
| 参数名 | 类型 | 是否必填 | 描述 |
|---|---|---|---|
| index | num | 必选 | 指定将要切换到的slide的索引 |
| speed | num | 可选 | 切换速度(单位ms) |
| runCallbacks | boolean | 可选 | 设置为false时不会触发transition回调函数 |
到此,我就实现了双向控制,点击上面的li能控制下面的滑动,下面的滑动,也能更改上面的选中。如果还有什么问题,欢迎留言或者自行查看官网API文档
swiper 轮播中常用的效果,持续更新的更多相关文章
- JavaScript中常用函数(入门级)(持续更新)
本文中枫竹梦介绍一些JavaScript中入门级的常用函数,对于已经过了入门的童鞋可选择略过,都是一些非常实用的函数.如果发现什么问题,欢迎讨论. 问题列表 Q1: 设计一个函数repeatIt(st ...
- 视频swiper轮播
关于本次文章的内容,实际上是咪咕阅读详情页中的一个前端需求要做的效果,不过比起原需求,此次案例已经被删减掉许多部分了.音频部分舍弃,调用客户端接口舍弃,并做一些整理.最后留下的是这个精简版的案例.方便 ...
- swiper轮播问题之一:轮播图内容为动态数据生成时轮播图无法自动轮播
本人在用H5做移动端项目中使用Swiper遇到的两个问题,因此加深了对Swiper的掌握,分享出来对刚开始接触Swiper的童鞋们或多或少会有帮助. 首先,new Swiper的初始化最 ...
- 使用Swiper轮播插件引起的探索
提到Swiper轮播插件,小伙伴们应该不会感到陌生.以前我主要在移动端上使用,PC端使用较少. 注:这里需要注意的是,在PC端和移动端使用Swiper是不同的 官方给的版本有三个,分别是Swiper2 ...
- swiper轮播在ie浏览器上遇到的显示问题探索
前言: 最近项目有一个需求,想要下图效果,鼠标指向头像图片,图片会放大同时上面的轮播会跟着切换: 鼠标移开头像图片,图片变回原来的大小 注:下图是我根据上面需求已经实现的效果,所以截图方便说明 思考: ...
- git常用命令(持续更新中)
git常用命令(持续更新中) 本地仓库操作git int 初始化本地仓库git add . ...
- bootstrap中的动态加载出来的图片轮播中的li标签中的class="active"的动态添加移除
//该方法是在slide改变时立即触发该事件, $('#myCarousel').on('slide.bs.carousel', function () { $("#myCarousel o ...
- 封装bt轮播图淡入淡出效果样式
<!--BT轮播图--> <div data-ride="carousel" class="carousel slide carousel_inn ...
- layui轮播中箭头不起作用问题
layui轮播中箭头不起作用问题 layui轮播插件在使用中发现箭头不起作用其他都合适,是什么原因造成的呢?发现单独提出layui中的demo是合适的,通过仔细慢慢的寻找,发现layui.use('c ...
随机推荐
- 基于netty4.x开发时间服务器
在写代码之前 先了解下Reactor模型: Reactor单线程模型就是指所有的IO操作都在同一个NIO线程上面完成的,也就是IO处理线程是单线程的.NIO线程的职责是: (1)作为NIO服务端,接收 ...
- Flask 蓝图机制及应用
我们都知道 flask 是一个轻量级的 web 框架,相对于其他同类型框架更为灵活.轻便.安全且容易上手.开发者可以随意编写自己想要的项目结构,同时还有很多的第三方库供君选择.但是灵活的同时也带来了相 ...
- luogu P2701 [USACO5.3]巨大的牛棚Big Barn |动态规划
题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N x N 的方格.输入数据中包括有树的 ...
- 牛客竞赛-Who killed Cock Robin
Who killed Cock Robin? I, said the Sparrow, With my bow and arrow,I killed Cock Robin. Who saw him d ...
- java之扩展运算符
java中的扩展运算符为+=.-=./=.%=.*= 当使用扩展运算符时,变量在参与赋值运算时会把结果自动强制转换为当前变量的类型,比如: public class Test{ public stat ...
- iOS面试的算法相关
转自:https://www.jianshu.com/p/c4820b159159 面试中遇到的这些算法,在平常工作中,基本不会用到. 不过现实的面试中经常喜欢问关于算法的问题 有些还要求写出代码.一 ...
- 压缩感知重构算法之IHT算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
- JS的引入方式_变量的使用_变量的类型
JS的俩种引入方式: 1. <!--js的引入方式1--> <script> /*网页中的弹框*/ alert("js的学习!!") </script ...
- python金融应用(二)基本数据类型和结构
一.基本数据类型 1.整形 a=10 type(a) Out[75]: int a.bit_length() #字节长度Out[76]: 4 整形相除会返回整形,想要返回浮点数,需要用浮点数相除1./ ...
- ruby 构建API接口流程代码
来源:https://ruby-china.org/topics/25822 1.创建新项目 rails new api_demo 2.生成控制器: # 我们不需要生成资源文件 $ bundle ex ...