真食物配套的电商小程序.
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.

96 lines
2.4 KiB

<template>
<view class="slider-banner product-bg">
<swiper
class="swiper-wrapper"
@change="handleChange"
v-if="imgUrls.length > 0"
>
<block v-for="(item, imgUrlsIndex) in imgUrls" :key="imgUrlsIndex">
<swiper-item>
2 years ago
<image :src="item" @tap="previewImage(imgUrlsIndex)" class="slide-image" mode="aspectFill"/>
</swiper-item>
</block>
</swiper>
<!-- <swiper class="swiper-wrapper" :options="ProductConSwiper" v-if="imgUrls.length > 0">
<swiperSlide class="swiper-slide" v-for="item in imgUrls" :key="item" ref="goodSwiper">
<image :src="item" class="slide-image" />
</swiperSlide>
</swiper>-->
2 years ago
<view class="dots-box acea-row row-center">
<view :class="'dot ' + (currents == index?'on':'')" v-for="(item,index) in imgUrls.length" :key="index"></view>
</view>
<!-- <view class="pages">{{ currents || 1 }}/{{ imgUrls.length || 1 }}</view> -->
</view>
</template>
<script>
// import { swiper, swiperSlide } from "vue-awesome-swiper";
export default {
name: "ProductConSwiper",
components: {
// swiper,
// swiperSlide
},
props: {
imgUrls: {
type: Array,
default: () => [],
},
},
data: function () {
let that = this;
return {
2 years ago
currents: 0,
ProductConSwiper: {
autoplay: {
disableOnInteraction: false,
delay: 2000,
},
loop: true,
speed: 1000,
observer: true,
observeParents: true,
on: {
slideChangeTransitionStart: function () {
that.currents = this.realIndex + 1;
},
},
},
};
},
mounted: function () {},
methods: {
handleChange(event) {
2 years ago
this.currents = event.mp.detail.current;
// this.currents = event.mp.detail.current + 1;
},
previewImage(current) {
uni.previewImage({
current,
urls: this.imgUrls,
});
},
},
};
</script>
2 years ago
<style lang="less" scoped>
.dots-box {
position: absolute;
left: 50%;
transform: translateX(-50%);
padding-top: 16rpx;
.dot {
width: 8rpx;
height: 8rpx;
background: #FFFFFF;
border-radius: 50%;
margin: 0rpx 8rpx;
}
.on {
width: 34rpx;
background: #2DB5AE;
border-radius: 6rpx;
transition: width .4s;
}
}
</style>