輪播圖在一般項目中很常見,很多常用element-ui組件庫中也有輪播圖,可以不再單獨使用swiper,但是當有的ui組件不能完成你的需求后,則可以使用swiper完成。
1,首先安裝swiper
yarn add swiper
2,引入
import Swiper from "swiper"; import "swiper/css/swiper.min.css";
3、代碼塊(布局代碼塊)
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide slide_item" v-for="(item,i) in image" :key="i">
<img
@click="$router.push({ path: `/business_detail/${item._id}` })"
:src="item.src"
alt
:onerror="defaultImg"
/>
</div>
</div>
</div>
css-----------如果你可以保證輪播圖尺寸一致的話,可以不用限制圖片高度,反之,圖片尺寸不同的話,你可以通過媒體查詢為每個尺寸的輪播圖定一下高度
.slide_item img {
width: 100%;
object-fit: cover;
}
媒體查詢如下:可根據需要添加
@media (min-width: 400px) and (max-width: 768px) {
.slide_item {
img {
height: 200px;
}
}
}
4、數據獲取以及輪播圖渲染
businessList().then(res => {
if (res.code == 0) {
this.image=res.data--------------------綁定的輪播圖數據
}
this.$nextTick(() => {
this.swiper();--------------此處為輪播初始化,我寫成了一個方法
});
});
5、swiper初始化
swiper() {
var mySwiper = new Swiper(".swiper-container", {
autoplay: true,
autoplay: {
disableOnInteraction: false
},
speed: 800,
loop: true,
autoplayDisableOnInteraction: false,
observer: true,----------------當獲取圖片時,輪播圖不會循環輪播,原因是初始化的時候,還沒有數據,數據拿到了,又初始化過了,因此加上粉色的這兩個對象可以解決這個問題。
observeParents: true,
paginationClickable: true
});
}
6、無縫滾動
swiper() {
var mySwiper = new Swiper(".swiper-container1", {
initialSlide: 0,
autoplay: true,
loop: true,
speed: 1000,
slidesPerView: 5,----------你想有幾個圖片同時展示在頁面上就寫幾,每次平滑過渡一張圖片
spaceBetween: 0,
observer: true,----------原因同上
observeParents: true,
paginationClickable: true,
autoplay: {
disableOnInteraction: false
}
});
}
