Swiper轮播图怎么写
一、安装swiper
npm install swiper
二、引入swiper
在项目的入口文件引入css样式
import 'swiper/css/swiper.css';
在用到swiper的组件中引入swiper
import Swiper from 'swiper';
写轮播图结构
<div class="swiper-container" id="floor1Swiper" ref="cur">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(carousel, index) in list.carouselList" :key="carousel.id">
<img :src="carousel.imgUrl">
</div>
</div>
<!-- 如果需要分页器 -->
<div class="swiper-pagination"></div>
<!-- 如果需要导航按钮 -->
<div class="swiper-button-prev"></div>
<div class="swiper-button-next"></div>
</div>
new轮播图实例
①若当前轮播图中的数据是在当前组件中向服务器发请求获取的,那么请求数据需要时间,那么会导致new轮播图实例的时候,数据都还没来到前台呢。需要用watch + nextTick来解决这个问题
watch: {
bannerList: {
handler(newValue, oldValue) {
this.$nextTick(() => {
var mySwiper = new Swiper(this.$refs.mySwiper, {
loop: true,
speed: 300,
grabCursor: true,
autoplay: {
delay: 3000
},
pagination: {
el: ".swiper-pagination",
clickable: true,
},
// 如果需要前进后退按钮
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
})
})
}
}
}
②倘若轮播图用到的数据不用当前组件去向服务器请求,也就是说当前组件已经拿到数据,那可以直接在mouted中写轮播图实例对象
mounted() {
this.$nextTick(() => {
var mySwiper = new Swiper(this.$refs.cur, {
loop: true,
speed: 300,
grabCursor: true,
autoplay: {
delay: 3000
},
pagination: {
el: ".swiper-pagination",
clickable: true,
},
// 如果需要前进后退按钮
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
})
})
}
遇到具体问题还请查阅swiper官网
https://www.swiper.com.cn/