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
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>
|