更多实例,可以查看Swiper官方展示http://www.swiper.com.cn/demo/web/index.html
【列表】
(1)基础滑动
(2)按钮切换
(3)分页
(4)分页器 / 动态指示点
(5)进度条指示器
(6)分式指示器
(7)自定义指示器
(8)滚动条
(9)垂直切换
(10)slides之间设置间隔
(11)过渡前执行动画
(12)一页显示多个Slides
(13)自定义slide宽度 / Carousel转盘模式
(14)slides居中
(15)Slides居中 + 自定义Slides宽度
(16)free自由模式 / 不贴合边缘
(17)垂直方向内容滚动
(18)多行slides分布
(19)Swipers嵌套
(20)抓手光标
(21)Loop模式 / 无限循环模式
(22)Loop模式+Slides分组
(23)切换效果
(24)键盘控制
(25)鼠标滚轮控制
(26)自动切换
(27)动态添加Slides
(28)缩略图控制 / Swiper互相控制
(29)缩略图控制 / 无限循环
(30)视差效果
(31)延迟加载图片
(32)响应式设置
(33)虚拟Slides
【主体】
先写出基础页面架构
<div class="swiper-container "> <div class="swiper-wrapper"> <div class="swiper-slide">1</div> <div class="swiper-slide">2</div> <div class="swiper-slide">3</div> </div> </div>
(1)基础滑动
初始化Swiper
var mySwiper = new Swiper('.swiper-container');
(2)按钮切换
<div class="swiper-button-next"></div> <div class="swiper-button-prev"></div> //以下为JS代码 navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev', },
(3)分页
<div class="swiper-pagination"></div> //以下为JS代码 pagination: {//分页 el: '.swiper-pagination', },
(4)分页器 / 动态指示点
pagination: {//分页 el: '.swiper-pagination',//添加分页 dynamicBullets: true,//动态指示点 },
(5)进度条指示器
pagination: {//分页 el: '.swiper-pagination',//添加分页 type: 'progressbar',//进度条指示器 },
(6)分式指示器
pagination: {//分页 el: '.swiper-pagination',//添加分页 type: 'fraction',//分式指示器 },
(7)自定义指示器
//css .swiper-pagination-bullet { width: 20px; height: 20px; text-align: center; line-height: 20px; font-size: 12px; color: #000; opacity: 1; background: rgba(0,0,0,0.2); } .swiper-pagination-bullet-active { color: #fff; background: #007aff; } //JS代码 pagination: {//分页 el: '.swiper-pagination', clickable: true,//分页指示点可点击 renderBullet: function (index, className) {//分页点加索引 return '<span class="' + className + '">' + (index + 1) + '</span>'; }, },
(8)滚动条
<div class="swiper-scrollbar"></div> //以下为JS代码 scrollbar: { el: '.swiper-scrollbar', hide: true,//控制显示隐藏 },
(9)垂直切换
//CSS代码 #Swiper-first{ width: 100%; height: 300px; overflow-y: hidden; } <!--垂直分页--> <div class="swiper-pagination"></div> //以下为JS代码 direction: 'vertical', pagination: { el: '.swiper-pagination', clickable: true, },
(10)slides之间设置间隔
spaceBetween: 30,//设置slides间隔
(11)过渡前执行动画
①添加类名和参数,在需要运动的元素上面增加类名ani,具体可以参考文章Swiper Animate用法详解
②JS控制显示添加删除
<div class="swiper-container" id="Swiper-one"> <div class="swiper-wrapper"> <div class="swiper-slide"> <p class="ani" swiper-animate-effect="fadeInUp">内容1</p> </div> <div class="swiper-slide"><p> <p class="ani" swiper-animate-effect="fadeInLeft">内容2</p> </div> <div class="swiper-slide"> <p class="ani" swiper-animate-effect="fadeInDown">内容3</p> </div> </div> <div class="swiper-pagination"></div> </div> //JS代码 var mySwiper = new Swiper ('.swiper-container', { on:{ init: function(){ swiperAnimateCache(this); //隐藏动画元素 swiperAnimate(this); //初始化完成开始动画 }, slideChangeTransitionEnd: function(){ swiperAnimate(this); //每个slide切换结束时也运行当前slide动画 } } })
(12)一页显示多个Slides
slidesPerView: 3,
(13)自定义slide宽度 / Carousel转盘模式
//CSS代码 .swiper-slide{ width: 80%; } //JS代码 slidesPerView: 'auto'//开启slide宽度自定义功能
(14)slides居中
适用于一页显示多个Slides的幻灯片
slidesPerView: 4,//一页4个 centeredSlides: true,//首个居中
(15)Slides居中 + 自定义Slides宽度
slidesPerView: 'auto'//开启slide宽度自定义功能 centeredSlides: true,//首个居中
(16)free自由模式 / 不贴合边缘
freeMode: true,
(17)垂直方向内容滚动
<!--滚动条--> <div class="swiper-scrollbar"></div> //JS代码 direction: 'vertical', slidesPerView: 'auto',//自定义宽度/高度 freeMode: true,//自由模式 scrollbar: { el: '.swiper-scrollbar', }, mousewheel: true,// 开启鼠标滚轮
(18)多行slides分布
//CSS .swiper-container { width: 100%; height: auto; margin-left: auto; margin-right: auto; } //JS代码 slidesPerColumn: 2,//两行
(19)Swipers嵌套
<div class="swiper-container" id="Swiper-one"> <div class="swiper-wrapper"> <div class="swiper-slide"> 1 </div> <div class="swiper-slide"> <div class="swiper-container" id="Swiper-two"> <div class="swiper-wrapper"> <div class="swiper-slide">1</div> <div class="swiper-slide">2</div> <div class="swiper-slide">3</div> </div> <div class="swiper-pagination swiper-pagination-v"></div> </div> </div> <div class="swiper-slide"> 3 </div> </div> <div class="swiper-pagination swiper-pagination-h"></div> </div> //JS代码 <script> var swiperH = new Swiper('#Swiper-one', { spaceBetween: 50, pagination: { el: '.swiper-pagination-h', clickable: true, }, }); var swiperV = new Swiper('#Swiper-two', { direction: 'vertical', spaceBetween: 50, pagination: { el: '.swiper-pagination-v', clickable: true, }, }); </script>
(20)抓手光标
grabCursor: true,
(21)Loop模式 / 无限循环模式
loop: true,
(22)Loop模式+Slides分组
slidesPerView: 3, spaceBetween: 30, slidesPerGroup: 3, loop: true, loopFillGroupWithBlank: true,//在loop模式下,为group填充空白slide
(23)切换效果
①渐变切换
effect: 'fade',//淡入
②3D方块切换
effect:'cube'//方块
③3D滚动切换
effect:'coverflow'//3D流
④3D翻转切换
effect:'flip'//翻动
(24)键盘控制
keyboard: { enabled: true,//启用键盘 },
(25)鼠标滚轮控制
mousewheel: true,//开启滚轮
(26)自动切换
autoplay:true, //等同于以下设置 autoplay: { delay: 3000,/延迟300ms stopOnLastSlide: false,//是否停在最后一张 disableOnInteraction: true,//开启交互 },
(27)动态添加Slides
<p class="append-buttons"> <a href="#" class="prepend-2-slides">Prepend 2 Slides</a> <a href="#" class="prepend-slide">Prepend Slide</a> <a href="#" class="append-slide">Append Slide</a> <a href="#" class="append-2-slides">Append 2 Slides</a> </p> //JS代码 var appendNumber = 4; var prependNumber = 1; document.querySelector('.prepend-2-slides').addEventListener('click', function (e) { e.preventDefault(); swiper.prependSlide([ '<div class="swiper-slide">Slide ' + (--prependNumber) + '</div>', '<div class="swiper-slide">Slide ' + (--prependNumber) + '</div>' ]); }); document.querySelector('.prepend-slide').addEventListener('click', function (e) { e.preventDefault(); swiper.prependSlide('<div class="swiper-slide">Slide ' + (--prependNumber) + '</div>'); }); document.querySelector('.append-slide').addEventListener('click', function (e) { e.preventDefault(); swiper.appendSlide('<div class="swiper-slide">Slide ' + (++appendNumber) + '</div>'); }); document.querySelector('.append-2-slides').addEventListener('click', function (e) { e.preventDefault(); swiper.appendSlide([ '<div class="swiper-slide">Slide ' + (++appendNumber) + '</div>', '<div class="swiper-slide">Slide ' + (++appendNumber) + '</div>' ]); });
(28)缩略图控制 / Swiper互相控制
(29)缩略图控制 / 无限循环
经过测试后,发现稳定性较差,存在BUG
(30)视差效果
parallax(视差) 类型:boolean 默认:false
设置为true开启视差效果,效果可以应用于container或slide的子元素
效果列表:
1.视差位移变化
在所需要的元素上增加data-swiper-parallax属性(与Swiper切换方向相同)或data-swiper-parallax-x (x方向) data-swiper-parallax-y(y方向)
data-swiper-parallax接受两种类型的参数
number(单位:px),如-300,从右边300px进入左边出去;
percentage(百分比),移动距离=该元素宽度 * percentage
2.透明度变化data-swiper-parallax-opacity,可选值0-1
3.缩放变化data-swiper-parallax-scale属性
4.持续时间data-swiper-parallax-duration设定视差动画持续时间(ms)
注意:设定透明度或缩放必须同时设定位移,否则无效
(31)延迟加载图片
<div class="swiper-container"> <div class="swiper-wrapper"> <!-- 延迟加载图片的结构 --> <div class="swiper-slide"> <img data-src="path/to/picture-1.jpg" class="swiper-lazy"> <div class="swiper-lazy-preloader"></div> </div> <!-- 使用srscet的延迟加载图片的结构(注:2x,2倍分辨率如retina屏幕时加载)--> <div class="swiper-slide"> <img data-src="path/to/logo-small.png" data-srcset="path/logo/logo-large.png 2x" class="swiper-lazy"> <div class="swiper-lazy-preloader"></div> </div> <!-- 延迟加载背景图的结构 --> <div class="swiper-slide"> <div data-background="path/to/picture-2.jpg" class="swiper-lazy"> <div class="swiper-lazy-preloader"></div> </div> </div> <!-- slide的背景延迟加载 --> <div data-background="path/to/picture-3.jpg" class="swiper-slide swiper-lazy"> <div class="swiper-lazy-preloader"></div> </div> </div> </div> <script> var mySwiper = new Swiper('.swiper-container', { lazy: { loadPrevNext: true, }, }); </script>
(32)响应式设置
主要原理是断点设置
breakpoints: { 1024: { slidesPerView: 4, spaceBetween: 40, }, 768: { slidesPerView: 3, spaceBetween: 30, }, 640: { slidesPerView: 2, spaceBetween: 20, }, 320: { slidesPerView: 1, spaceBetween: 10, } }
(33)自动高度
autoHeight: true, //启用自动高度
(34)虚拟Slides
<div class="swiper-pagination"></div> //JS代码 pagination: { el: '.swiper-pagination', type: 'fraction', }, virtual: { slides: (function () { var slides = []; for (var i = 0; i < 600; i += 1) { slides.push('Slide ' + (i + 1)); } return slides; }()), }, document.querySelector('.slide-1').addEventListener('click', function (e) { e.preventDefault(); swiper.slideTo(0, 0); }); document.querySelector('.slide-250').addEventListener('click', function (e) { e.preventDefault(); swiper.slideTo(249, 0); }); document.querySelector('.slide-500').addEventListener('click', function (e) { e.preventDefault(); swiper.slideTo(499, 0); });
首先我们需要明白swiper 想要速度的效果是需要用到 transition-timing-function: 这个参数的 其次需要配合speed:1200,使用 lin
最后一屏底部自动高度的方法为 slidesPerView:auto, css代码 .foot{height:auto!important;} 但是这种情况会出现滚动到最后一屏的
slidesPerView:1,autoplay:3000,direction:vertical,grabCursor:true,autoplayDisableOnInteraction:false,mousewheelControl:true,autoHeight:true,//重点就是
直接鼠标hover模拟click即可! $(.swiper-pagination-bullet).hover(function(){$(this).click();//鼠标划上去之后,自动触发点击事件来
swiper嵌套的swiper怎样实现鼠标滚动切换,当嵌套的切换完之后,在继续切换外面的swiper !DOCTYPEhtml!--savedfromurl=(0044)ht
Swiper默认的切换时间曲线是ease,可以通过添加css3的transition-timing-function属性来改变。 改变Swiper切换的时间曲线 .swi