根据需求,实现首页banner,左边大图,右边缩略图;轮播图自动轮播,缩略图选中状态动态变动,跟随大轮播图轮播。同时,鼠标点击任意一个缩略图,左边大图动态跟随轮播。

<template>
<div class="BannerBox">
<div class="LeftBanner">
<div class="swiperBox">
<div class="swiper-wrapper">
<div
class="swiper-slide justifyCenter Cursor"
v-for="(item, index) in bannerList"
:key="'banner' + index"
@click="ToDetail(item.id)"
>
<img class="bannerImg" :src="item.pic" alt="" />
</div>
</div>
</div>
</div>
<div class="RightBanner">
<div class="swiperThumbs">
<div class="swiper-wrapper">
<div class="swiper-slide Cursor justifyCenter" v-for="(item, index) in bannerList" :key="'banner' + index">
<img class="bannerImg" :src="item.pic" alt="" />
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import Swiper from 'swiper'
export default {
data() {
return {
bannerList: [],
}
},
created() {
this.getBannerList()
},
mounted() {},
methods: {
getBannerList() {
this.$axios
.get('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
.then((res) => {
if (res.code == 1) {
this.bannerList = res.result_data
this.$nextTick(() => {
this.swiperInit()
})
}
})
.catch((err) => {
this.$message.error(err)
})
},
swiperInit() {
let thumbsSwiper = new Swiper('.swiperThumbs', {
loop: false,
direction: 'vertical',
slidesPerView: 'auto',
spaceBetween: 15,
watchSlidesVisibility: true ,
on: {
click: function (e) {},
},
})
let swiper = new Swiper('.swiperBox', {
loop: false,
autoplay: {
delay: 3000,
disableOnInteraction: false,
},
thumbs: {
swiper: thumbsSwiper,
multipleActiveThumbs: true,
autoScrollOffset: 1,
slideThumbActiveClass: 'my-slide-thumb-active',
},
})
},
ToDetail(id) {
this.$router.push({ name: 'xxx', params: {})
},
},
}
</script>
<style lang="less" scoped>
.BannerBox {
height: 490px;
display: flex;
justify-content: space-between;
.LeftBanner {
width: 890px;
background: #333;
overflow: hidden;
border-radius: 10px;
}
.RightBanner {
width: 285px;
background: #e8f7ff;
display: flex;
overflow: hidden;
padding: 15px 19px;
border-radius: 10px;
.swiper-slide {
height: 138px;
margin-bottom: 15px;
}
.my-slide-thumb-active {
border: 2px solid #3875f6;
}
}
.swiperBox,
.swiperThumbs {
width: 100%;
height: 100%;
margin: 0 auto;
.swiper-slide {
background-color: #ccc;
width: 100%;
border-radius: 10px;
overflow: hidden;
.bannerImg {
width: 100%;
height: 100%;
}
}
}
.swiperBox {
.swiper-slide {
height: 100%;
}
}
}
</style>