You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

170 lines
4.4 KiB

<template>
<section class="tw-relative">
<div class="swiper-container partnerWrapper xl:tw-max-w-[1060px] xl:tw-mx-auto">
<div ref="partnerWrapper"
class="swiper-wrapper tw-grid tw-grid-cols-2 tw-gap-x-[40px] tw-gap-y-[20px] md:tw-grid-cols-3 md:tw-gap-x-[36px] md:tw-gap-y-[19px] xl:tw-flex xl:tw-gap-0 xl:tw-grid-cols-none">
<div
class="swiper-slide partner tw-w-full xl:tw-flex xl:tw-justify-center xl:tw-items-center xl:tw-basis-1/5 xl:tw-max-w-[180px]"
v-for="(item, index) in partnershiplist" :key="index">
<img :src="item.image" />
</div>
</div>
</div>
<div class="swiper-button-prev partner tw-hidden xl:tw-block tw-h-[20px] tw-w-[12px]"></div>
<div class="swiper-button-next partner tw-hidden xl:tw-block"></div>
</section>
</template>
<script>
import Swiper from "swiper";
export default {
data() {
return {
partnerSwiper: null,
windewWidth: 0,
};
},
components: { Swiper },
props: {
partnershiplist: {
type: Array,
},
},
created() {
if (process.browser) {
window.addEventListener("resize", this.handleResize);
}
this.handleResize();
},
mounted() {
let vm = this;
vm.$nextTick(function () {
if (vm.windewWidth >= 1366) {
vm.partnerSwiper = new Swiper(".swiper-container.partnerWrapper", {
direction: "horizontal",
initialSlide: 0,
slidesPerView: 5,
// centerInsufficientSlides: true,
loop: true,
loopedSlides: 0,
autoplay: {
disableOnInteraction: true,
delay: 4000,
},
slidesPerGroup: 5,
spaceBetween: 40,
observer: true, //修改swiper自己或子元素时,自动初始化swiper
observeParents: true, //修改swiper的父元素时,自动初始化swiper
navigation: {
nextEl: ".swiper-button-next.partner",
prevEl: ".swiper-button-prev.partner",
},
});
vm.partnerSwiper.init();
vm.partnerSwiper.update();
// vm.partnerSwiper.lazy.load();
}
})
},
destroyed() {
if (process.browser) {
window.removeEventListener("resize", this.handleResize);
}
},
watch: {
windewWidth: {
handler: function () {
let vm = this;
if (vm.windewWidth >= 1366) {
vm.partnerSwiper = new Swiper(".swiper-container.partnerWrapper", {
direction: "horizontal",
initialSlide: 0,
slidesPerView: 5,
// centerInsufficientSlides: true,
loop: true,
loopedSlides: 0,
autoplay: {
disableOnInteraction: true,
delay: 4000,
},
slidesPerGroup: 5,
spaceBetween: 40,
observer: true, //修改swiper自己或子元素时,自动初始化swiper
observeParents: true, //修改swiper的父元素时,自动初始化swiper
navigation: {
nextEl: ".swiper-button-next.partner",
prevEl: ".swiper-button-prev.partner",
},
});
vm.partnerSwiper.init();
vm.partnerSwiper.update();
} else {
if (this.partnerSwiper) {
this.partnerSwiper.destroy(false);
setTimeout(function () {
vm.$refs.partnerWrapper.removeAttribute('style');
}, 1000)
}
}
},
},
},
methods: {
handleResize() {
if (process.browser) {
this.windewWidth = window.innerWidth;
}
},
},
};
</script>
<style lang="scss" scoped>
.swiper-button {
&-prev.partner {
color: transparent;
z-index: 4;
width: 12px !important;
height: 20px !important;
&:after {
background-image: url("~/assets/svg/swiperarrowleft.svg");
background-position: center;
background-repeat: no-repeat;
// background-size: 100%;
width: 12px !important;
height: 20px !important;
}
&:focus-visible,
&:focus {
outline: none;
}
}
&-next.partner {
color: transparent;
width: 12px;
height: 20px;
z-index: 4;
&:after {
background-image: url("~/assets/svg/swiperarrowright.svg");
background-position: center;
background-repeat: no-repeat;
// background-size: 100%;
width: 12px;
height: 20px;
}
&:focus-visible,
&:focus {
outline: none;
}
}
}
</style>