本文实例为大家分享了JS轮播图的实现代码,供大家参考,具体内容如下
需求:
自动轮播,鼠标移入轮播停止、移出继续,小圆点点击切图,左右箭头切图
效果图:
思路
通过编写过渡动画实现轮播效果,图片的出现动画以及移出动画。显示区的图片移出,切换的图进入分别调用动画,程序关键点:哪张图应该进入,哪张图应该移出。
轮播分为三部分:
自动轮播,左右箭头翻图,底部小圆点点击翻图。
编写程序顺序:
1. 小圆点点击
为什么先做小圆点呢?做小圆点点击功能时,我们能够清晰的知道哪张图片应该切换过来,哪张图片应该移开。例如,显示区是第一张图时,点击第二个原点,那么当前的第一张图应该移开,第二图应该进入。
2.左右箭头切换
这部分功能,我们可以这种思路,当点击左箭头时,相当于我们按顺序点击1、2、3号小圆点,只是显示区为3号图时,我们需要将下一张设置为1号图。所以加一个判断条件即可,当计数器为3时,重置为1;右边箭头相反即可 顺序变为3、2、1,当当计数器为1时,重置为3。
3.自动轮播
这功能就相当于在一定的时间间隔内,点击右边箭头或者左边箭头。
HTML部分:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
< div id = "banner" >
< div class = "w" >
<!-- 左右箭头-->
< span class = "iconfont icon-zuojiantou" onclick = "arrow_left()" ></ span >
< span class = "iconfont icon-youjiantou" onclick = "arrow_right()" ></ span >
<!-- 轮播图-->
< ul >
< li >< img src = "img/1.jpg" alt = "" ></ li >
< li style = "left: 1000px" >< img src = "img/2.jpg" alt = "" ></ li >
< li style = "left: 1000px" >< img src = "img/3.jpg" alt = "" ></ li >
</ ul >
<!-- /小圆点-->
< ol id = "circleContainer" >
< li onclick = "move(0)" ></ li >
< li onclick = "move(1)" ></ li >
< li onclick = "move(2)" ></ li >
</ ol >
</ div >
</ div >
|
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
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
|
<style>
*{
margin : 0 ;
padding : 0 ;
list-style : none ;
}
.w {
width : 1000px ;
height : 600px ;
margin : 100px auto 0 ;
position : relative ;
overflow : hidden ;
}
ul {
height : 600px ;
}
@keyframes leftCome {
from {
left : -100% ;
}
to {
left : 0 ;
}
}
@keyframes leftOut {
from {
left : 0 ;
}
to {
left : 100% ;
}
}
@keyframes rightCome {
from {
left : 100% ;
}
to {
left : 0 ;
}
}
@keyframes rightOut {
from {
left : 0 ;
}
to {
left : -100% ;
}
}
ul li {
position : absolute ;
width : 1000px ;
}
ul li img {
width : 100% ;
height : 600px ;
}
.iconfont {
color : white ;
position : absolute ;
font-size : 30px ;
top : calc( 50% - 15px );
background-color : rgba( 216 , 216 , 216 , 0.23 );
cursor : pointer ;
opacity: 0 ;
transition: opacity . 3 s linear;
z-index : 999 ;
}
.iconfont:hover {
color : palegreen;
}
.icon-zuojiantou {
left : 0 ;
border-top-right-radius: 50% ;
border-bottom-right-radius: 50% ;
}
.icon-youjiantou {
right : 0 ;
border-top-left-radius: 50% ;
border-bottom-left-radius: 50% ;
}
#circleContainer {
position : absolute ;
bottom : 10px ;
left : calc( 50% - 30px );
}
#circleContainer li {
display : inline- block ;
width : 20px ;
height : 20px ;
border-radius: 50% ;
background-color : white ;
margin-right : 5px ;
}
#circleContainer .change {
background-color : palegreen;
box-shadow: 0 0 10px #7dd07d ;
}
</style>
|
JS部分:
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
|
<script>
let timer ;
window.onload = function (){
timer = setInterval( function () {
arrow_left();
},3000)
};
let arrow = document.querySelectorAll( ".iconfont" );
let w = document.querySelector( ".w" );
let circle = document.querySelectorAll( "ol li" );
w.addEventListener( "mouseenter" , function () {
clearInterval(timer);
arrow[0].style.opacity = "1" ;
arrow[1].style.opacity = "1" ;
});
w.addEventListener( "mouseleave" , function () {
arrow[0].style.opacity = "0" ;
arrow[1].style.opacity = "0" ;
timer = setInterval( function () {
arrow_left();
},3000)
});
circle[0].className = "change" ;
let location_i = 0;
let li = document.querySelectorAll( "ul li" );
// 移动函数
function move(i,direcTion_) {
if (direcTion_ === "right" ) {
if (location_i !== i) {
li[i].style.animation = "rightCome .5s ease forwards" ;
li[location_i].style.animation = "rightOut .5s ease forwards" ;
location_i = i;
num = i;
}
} else {
if (location_i !== i) {
li[i].style.animation = "leftCome .5s ease forwards" ;
li[location_i].style.animation = "leftOut .5s ease forwards" ;
location_i = i;
num = i;
}
}
for (let i = 0 ; i<circle.length ;i++){
circle[i].className = "" ;
}
circle[location_i].className = "change" ;
}
// 右箭头
let flag = true ;
let num = 0;
function arrow_right() {
flag = false ;
num === 2 ? num = 0 : num = location_i + 1;
move(num);
}
// 左箭头
function arrow_left() {
num === 0 ? num = 2 : num = location_i - 1;
move(num, "right" );
}
</script>
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/hthththtt/article/details/108181575