image-20230104123514646

如图:要实现如上所示的3D滚动轮播图效果

采用https://wlada.github.io/vue-carousel-3d/playground/所示的组件

具体实现代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<!--  
autoplay:自动旋转
autoplayTimeout:旋转倒计时
perspective:非主slide朝内旋转的角度
inverseScaling:非主slide离屏幕的距离
space:非主slide的间隔宽度
loop:是否循环轮播
width:轮播图宽度
height:轮播图高度
-->

<template>
<div >
<carousel-3d :autoplay="true"
:autoplayTimeout="3000"
ref="carousel" :perspective="30" :inverseScaling="500" space="400" :loop="false" @before-slide-change="onSlideChange" width="360" height="240" >
<slide v-for="(item,index) in Lists" :key="index" :index='index'>
<template >
<img :src="item.imgUrl" />
</template>

</slide>

</carousel-3d>
</div>
</template>
<script>
import { Carousel3d, Slide } from 'vue-carousel-3d'
// import Carousel3d from 'vue-carousel-3d';
export default {
components: {
Carousel3d,
Slide
},
data () {
return {
Lists: [
{
title: 'parent',
slide: 23424234234234,
imgUrl: './1 (1).jpg'
},
{
title: 'parent',
slide: 23424234234234,
imgUrl: './1 (2).jpg'
},
{
title: 'parent',
slide: 23424234234234,
imgUrl: './1 (3).jpg'
},
{
title: 'parent',
slide: 23424234234234,
imgUrl: './1 (4).jpg'
},
{
title: 'parent',
slide: 23424234234234,
imgUrl: './1 (5).jpg'
},
{
title: 'parent',
slide: 23424234234234,
imgUrl: './1 (6).jpg'
}

]
}
},
methods: {
onSlideChange (temp) {
console.log(this.$refs.carousel, 'xxx')
this.carouselIndex = temp
},
goSlideIndex (index) {
// this.$refs.carousel.goNext(index)
if (index > this.Lists.length - 1 || this.Lists.length - 1 < 0) {
return
}
// this.$refs.carousel.goSlide(index);
this.$refs.carousel.goFar(index)
}
}
}
</script>
<style lang="less" scoped>
/deep/.left-1 {
color: red;
transform: rotateY(-40deg) translateX(-400px) translateZ(100px) !important;
}
/deep/.left-2 {
color: red;
transform: rotateY(-40deg) translateX(-800px) translateZ(100px) !important;
}
/deep/.right-1 {
color: red;
transform: rotateY(40deg) translateX(400px) translateZ(100px) !important;
}
/deep/.right-2 {
color: red;
transform: rotateY(40deg) translateX(800px) translateZ(100px) !important;
}
</style>

更改3D走马灯的轮播方向需要到源码更新