本文实例为大家分享了Vue实现无缝轮播效果的具体代码,供大家参考,具体内容如下
代码
1.子组件代码
代码如下(示例):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
< template > < div > < div class = "box" @ mouseenter = "mouse" @ mouseleave = "mouseleave" > < ul class = "box1" > < li > < img :src = "n" v-for = "(n, i) in imgs" :key = "i" alt = "" :style = "{ left: (i - index) * 500 + 'px' }" :class = "hasAni ? 'animaton' : ''" /> </ li > </ ul > < p class = "tt" @ click = "left" ><</ p > < p class = "tt1" @ click = "right" >></ p > </ div > </ div > </ template > |
script代码如下(示例):
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
|
<script> export default { name: "Lunbo" , props: [ "imgs" ], data() { return { // js中使用图片,需要采用require导入 index: 1, hasAni: true , istrue: true , }; }, methods: { mouse() { clearInterval( this .timer); }, mouseleave() { this .timer = setInterval(() => { this .index++; this .hasAni = true ; if ( this .index == this .imgs.length - 1) { setTimeout(() => { this .index = 0; this .hasAni = false ; }, 750); } }, 1500); }, right() { if ( this .istrue) { this .index++; this .hasAni = true ; this .istrue = false ; if ( this .index == this .imgs.length - 1) { setTimeout(() => { this .index = 1; this .hasAni = false ; }, 750); } setTimeout(() => { this .istrue = true ; }, 1000); } }, left() { if ( this .istrue) { this .index--; this .hasAni = true ; this .istrue = false ; if ( this .index == 0) { setTimeout(() => { this .index = this .imgs.length - 1; this .hasAni = false ; }, 750); } setTimeout(() => { this .istrue = true ; }, 1000); } }, }, activated() { console.log(1); this .timer = setInterval(() => { this .index++; this .hasAni = true ; if ( this .index == this .imgs.length - 1) { setTimeout(() => { this .index = 0; this .hasAni = false ; }, 750); } }, 1500); }, decativated() { clearInterval( this .timer); }, }; </script> |
css
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
|
<style scoped> p { width : 30px ; height : 60px ; background-color : rgba( 46 , 139 , 86 , 0.356 ); line-height : 60px ; font-size : 24px ; position : absolute ; top : 105px ; } .tt { left : 0 ; } .tt 1 { right : 0 ; } .box { width : 500px ; height : 300px ; margin : 100px auto ; position : relative ; overflow : hidden ; } .box 1 img { position : absolute ; left : 0px ; top : 0 ; width : 500px ; height : 300px ; } .animaton { transition: left 0.75 s; } </style> |
2.父组件代码
父组件
1
2
3
|
< keep-alive > < Lunbo :imgs = "imgs" /> </ keep-alive > |
导入模块
1
|
import Lunbo from "./components/Lunbo" ; |
图片数据
1
2
3
4
5
6
7
8
9
10
11
12
13
|
data() { return { imgs:[ require( "./assets/6.jpg" ), require( "./assets/1.jpg" ), require( "./assets/2.jpg" ), require( "./assets/3.jpg" ), require( "./assets/4.jpg" ), require( "./assets/5.jpg" ), require( "./assets/6.jpg" ), require( "./assets/1.jpg" ), ], } |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/m0_53714569/article/details/115555475