效果:需要自动缓慢的轮播
问题:在请求回来的数据append到slide里面的时候,autoplay失效了,并且偏移值会一直出问题,目前最好的解决方法是在slide触摸一次 触发autoplay 然后再才会缓慢移动,虽然问题还没有彻底解决,但也还好。
代码如下:
在js里面进行初始化,在初始化里面添加两个重要属性
observer:true,//修改swiper自己或子元素的时候,自动初始化swiper
observeParents:true,//修改swiper的父元素时,自动初始化swiper
其余的属性
autoplay: {
delay: 2000,//1000毫秒切换一张
disableOnInteraction: false,
},
lazy: {//设为true的时候开启图片延迟加载默认值,使preloadImages无效
loadPrevNext: true,//设置为true允许将延迟加载应用到最接近的slide的图片(前一个和后一个slide)。
loadPrevNextAmount: 5,//设置在延迟加载图片时提前多少个slide。个数不可少于slidesPerView的数量。默认值为1
},
speed: 500,//切换一张的时间为500毫秒
freeMode:true,
loop: true,//是否形成环路
slidesPerView :'auto',//设置slider容器能够同时显示的slides数量(carousel模式)。,
spaceBetween:5,
onSlideChangeEnd: function(swiper){
swiper.update();
swiper.startAutoplay();
swiper.reLoop();
} ,
on: {
slideChangeTransitionEnd: function(){//回调函数,swiper从一个slide过渡到另一个slide结束时执行。
console.log(this.slides)
this.slides.transition(this.params.autoplay+this.params.speed).transform('translate3d(-5px)');
//this.params.autoplay.delay=1000 this.params.speed=1000
},
// slideChangeTransitionStart: function(){//swiper从当前slide开始过渡到另一个slide时执行。
// this.slides.transition(this.params.speed).transform('translate3d(0, 0, 0)');
//this.params.speed=700
//console.log(this.slides.transition(this.params.speed).transform('translate3d(0, 0, 0)'));
// },
}
});
window.onresize=function(){
swiper.update();
};
2019.1.17更新
1.在鼠标移入的时候swiper停止滑动,移出的时候滑动继续
var mySwiper6=new Swiper('#swiper6', {
init: false,
autoplay: {
delay: 1000,
},
slidesPerView: 4,
observer: true,//修改swiper自己或子元素时,自动初始化swiper
observeParents: true,//修改swiper的父元素时,自动初始化swipe
});
mySwiper6.el.onmouseover = function(){ //鼠标放上暂停轮播
mySwiper6.autoplay.stop();
};
mySwiper6.el.onmouseleave = function(){//鼠标移出继续轮播
mySwiper6.autoplay.start();
};
2.有时候会出现轮播图初始化有问题,可以利用延时器再进行一次初始化
setTimeout(function () {
mySwiper6.init();
},1000);
网友评论