亲宝软件园·资讯

展开

vue2使用swiper4踩坑

甘凤林 人气:3

前言

一开始打算采用最新的swiper7,后来好像是vue2兼容性问题,各种报错,所以从7退回到6,然后退回到5,5则是遇到鼠标滚轮事件的bug,于是再度回滚,到4终于画风正常了。

首先是引入

npm i swiper

↑这句话不是复制的,是因为出错太多,反复引用导致了可以直接手打的地步。

值得一提的是,下载会默认下载7,直接用艾特符号标定不如直接改版本重新下,此时需要在package.json里面调成版本4后重新下载

踩坑1:为了保证稳定,每次在package.json更该版本,最好立即下载当前版本,随后重启webstorm。

其他软件不清楚是否是必须。

踩坑2:引入位置

如果焦急的你看到这篇博客,而且不介意回滚到4的话,可以下载版本4,随后在需要轮播图的地方引入这三句话

import 'swiper/dist/js/swiper'
import 'swiper/dist/css/swiper.css'
import Swiper from "swiper"

这样就可以去官网拷代码了。new Swiper写在mouted里面。

踩坑3:使用空间,如果是轮播图内套轮播图,则需要注意命名,或者干脆采用id获取

我的代码:

this.swiper = new Swiper(".swiper-container-son1", {})

踩坑4:版本更迭导致无法通用

最简单的一个,前进后退的属性

官网3的示例:

nextButton: '.swiper-button-next',
prevButton: '.swiper-button-prev',

官网的版本7的示例:

navigation: {
     nextEl: ".swiper-button-next",
     prevEl: ".swiper-button-prev",
 },

这里采用的是官网版本7才能生效

绝大部分都是官网 7生效,但是小部分却是要版本4才能生效。

还有一个极致坑爹的属性,滚轮

省略*你妈买菜必超级加倍,跳广场舞永无C位*等脏话。

官网的官方api、swiper3以及swiper7的示例都是同一句

mousewheelControl : true,

但是,也许是swiper4特供,也许是各种不可名状的bug,真正在swiper4可用的代码是

mousewheel: true,

踩坑5:动态渲染导致的各种bug。

如果你的轮播数据来源是请求数据,那么需要补上一句

observer: true,//修改swiper自己或子元素时,自动初始化swiper

或者干脆做的更绝,直接在list监听里面写

watch: {
    imgList() {
        setTimeout(() => {
            // eslint-disable-next-line no-unused-vars
            this.swiper = new Swiper(".swiper-container-son1", {
                speed: 1000,
                autoplay: {
                    delay: 4000,
                    stopOnLastSlide: false,
                    disableOnInteraction: true,
                }
            })
        }, 0)
    }
},

这样可以保证在请求完成之后再执行插件。

附:Vue 引入swiper出错解决方案参考

总结

加载全部内容

相关教程
猜你喜欢
用户评论