nuxt_site/components/Product_InfiniteRotation/index.vue
2024-05-02 21:28:18 +08:00

77 lines
1.9 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<swiper id="swiper" :class="props?.Infinite ? 'isInfinite InfiniteRotation-box '
: 'InfiniteRotation-box '" ref="perRef" :initialSlide="0" :autoplay="{
delay: props?.Infinite == true ? 0 : props.autoPlayDelay,
stopOnLastSlide: false,//切换到最后一个slide时停止自动切换
disableOnInteraction: false,
reverseDirection: props.direction
}" :speed="props.speed" :injectStyles="['.swiper-wrapper{transition-timing-function: linear !important;}']"
:slidesPerView="props.slidesPerView" :loop="true" :modules="swiperModules">{{
banner_list
}}
<swiper-slide v-for="item in banner_list">
<div class="InfiniteRotation-carousel-items">
<nuxt-link :to="getHerf(item.src)">
<div class="image-container">
<div class="img_div">
<img alt="" :src="item.banner_img">
</div>
<div>
{{ item.text }}
</div>
</div>
</nuxt-link>
</div>
</swiper-slide>
</swiper>
</template>
<script setup lang="ts">
import { Swiper, SwiperSlide } from 'vue-awesome-swiper'
import 'swiper/css'
import { Autoplay } from "swiper";
/**
* Infinite:是否无限滚动
* autoPlayDelay自动播放延迟
* slidesPerView一次显示几张
* bannerList:{
* {
* banner_img:图片路径,
* src:跳转路径
* }
* }
* 如果要改样式请去该组件下的index.scss或
*media.scss进行修改
*/
const props = defineProps({
speed: {
default: 4000
},
Infinite: {
type: Boolean,
default: false
},
autoPlayDelay: {
// type: Number,
default: 1500,
},
direction: {
default: false
},
slidesPerView: {
type: Number,
default: 3
},
bannerList: {
type: Object,
default: []
}
})
const swiperModules = [Autoplay]
const banner_list = ref(props.bannerList)
// const direction=ref(props.direction)
</script>
<style scoped src="./index.scss"></style>
<style scoped src="./media.scss"></style>