Swiper轮播图系列

一、初始化Swiper

new Swiper('.swiper-container', {
        initialSlide: 0,
        slidesPerView: 3,
        breakpoints: {
          750: {
            slidesPerView: 1
          },
          990: {
            slidesPerView: 2
          }
        },
        spaceBetween: 12,
        loop: true,
        speed: 1000,
        autoplay: {
          disableOnInteraction: false, // 手动滑动后,不停止自动轮播
          delay: 3000 //3秒切换一次
        },
        observer: true,
        observeParents: true,
        pagination: {
          el: '.swiper-pagination',
          clickable: true,
          type: 'bullets'
        },
        paginationClickable: true,
        mousewheelControl: true,
        debugger: true
      });

二、Vue使用Swiper时,图片默认显示最后一张

2.1 问题

       Vue使用Swiper时,图片默认显示最后一张

2.2 分析

       需要动态加载数据,而官方推荐加载dom节点后再加载Swiper,在mounted钩子函数中初始化Swiper。我们数据在created使用ajax动态加载时,mounted完成调用,则swiper已经创建,而数据未加载完成,等数据加载完成时,swiper的页码没有再更新,所以显示的是最后一页的图片。

2.3 解决

1、通常的解决办法就是延迟加载,使用定时器:setTimeout(创建swiper方法名, 1000);

2、另一个相同思路的是直接使用v-show即可:v-show="list.length > 0",写在class为swiper-container上面。(此方法并不能解决首尾无缝衔接问题,首尾无缝衔接还是得使用方法1

三、手动点击或翻页后,不再自动轮播,自动轮播失效

3.1 解决

创建时设置属性:

        autoplay: {
          disableOnInteraction: false, // 手动滑动后,不停止自动轮播
          delay: 3000 //3秒切换一次
        },

四、循环轮播,循环到下一轮时,会反复重新加载图片

4.1 问题

       当loop设置为true时,循环到下一轮,再次出现的重复图片,会重新加载。

4.2 分析

       由于Swiper在轮播到首尾相接的位置时,由于HTML结构的变更(Swiper为了实现无缝轮播,会对首尾两张图片进行复制和调整),导致Vue认为图片发生了变更,从而重新渲染图片。

4.3 解决

       在使用for循环的时候,指定对应的key,使用key使用图片的src路径作为key,这样vue识别到相同的key,则不会再重复加载图片。

<swiper-slide
2  v-for="(image, index) in images"
3  :key="image.src"
4>
5  <img :src="image.src" alt="" />
6</swiper-slide>

五、在安卓上使用,设备息屏后重新亮起,导致轮播图卡死

5.1 问题

       安卓息屏后重新唤醒、或者当前页面失去焦点,展示了弹框,再关闭弹框回到当前页面,导致整个页面都卡死。

5.2 分析

       当前页面失去焦点后,轮播图仍然在运行,重新获得焦点时,大量遗留事件触发,导致页面卡死。

5.3 解决

       1、息屏/页面失去焦点时,触发事件,将轮播图暂停,亮屏/页面获得焦点时,触发事件,将轮播图恢复。(理论上如此,第二次息屏仍然存在问题)

       2、由于该安卓设备为定制设备,息屏后,会将后台进程全部暂停,只需在安卓端重新载入进程即可

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一茗道人nview

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值