我是靠谱客的博主 爱听歌小土豆,这篇文章主要介绍原JS实现banner图的常用功能,现在分享给大家,希望可以做个参考。

虽然,用jQuery实现banner图的各种效果十分简单快捷,但是我今天用css+js代码实现了几个banner图的常用功能,效果还不错。

此次,主要想实现以下功能:

  1. banner图循环不间断切换

  2. 通过自制按钮实现指定性banner图的切换

  3. 通过方向按钮实现banner图左/右定向依次切换

  4. 当banner图存在onmouseover事件时,停止banner切换,当存在onmouseout时继续切换

复制代码
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> #banner{ width: 716.8px; height: 537.6px; background-color: aquamarine; margin: 100px auto; position: relative; font-size: 0px; /*清除img图片间的回车符产生的间隔*/ overflow: hidden; } #banner #bannerImg{ width: 100%; position: absolute; top: 0px; left: 0px; white-space: nowrap; /*使这个图片能一行显示*/ transition:all 1s linear; } #banner #bannerImg .img{ width: 100%; } #banner #bannerButton{ font-size: 16px; color: white; position: absolute; bottom: 10px; left: 20px; } #banner #bannerButton .Button{ border-radius: 9px; border: none; outline: none; cursor: pointer; background-color: #7FFFD4; } #banner #bannerButtonAside .div1{ position: absolute; right: 10px; top: 50%; margin-top: -32px; cursor: pointer; } #banner #bannerButtonAside .div2{ position: absolute; left: 10px; top: 50%; margin-top: -32px; cursor: pointer; } </style> </head> <body> <!--实现 左右按钮,1234,自动滑动,鼠标停上显示小手不动 暂停。--> <section id="banner" onmouseover="changeStop()" onmouseout="changeStart()"> <!--以下是我们的banner图--> <div id="bannerImg"> <img class="img" src="../img/c95d7b9676ae739cccfc55457b93fe9c.jpg"/> <img class="img" src="../img/5f5bdebddd8f1d276aeac8af5f8fa38d.jpg"/> <img class="img" src="../img/5f5e5c091ecb0525fc8204f200670dd9.jpg"/> <img class="img" src="../img/efa11cad9094f951061ee21324277efe.jpg"/> <img class="img" src="../img/0b54c021bd4384c168d835dfc0908018.jpg"/> <img class="img" src="../img/25d10d413faca3bdd7e2d88667f4298f_看图王.jpg"/> <img class="img" src="../img/c95d7b9676ae739cccfc55457b93fe9c.jpg"/> <!--第7张与第一张为同一图片,消除图片切换间断--> </div> <!--以下是我们左下方的banner图按钮--> <div id="bannerButton"> <button class="Button" onclick="buttonChange(0)">1</button> <button class="Button" onclick="buttonChange(1)">2</button> <button class="Button" onclick="buttonChange(2)">3</button> <button class="Button" onclick="buttonChange(3)">4</button> <button class="Button" onclick="buttonChange(4)">5</button> <button class="Button" onclick="buttonChange(5)">6</button> </div> <!--以下是我们左右两个方向按钮--> <div id="bannerButtonAside"> <div class="div1" onclick="asideChange(1)"> <img src="../img/forword.png"/> </div> <div class="div2" onclick="asideChange(0)"> <img src="../img/back.png"/> </div> </div> </section> </body> <script type="text/javascript"> var bannerImg=document.getElementById("bannerImg"); /*取出img容器的节点*/ var Button=document.getElementsByClassName("Button"); /*取出所有的button按钮*/ var num=0; /*定义全局变量num,控制banner的切换次序*/ var aaa=0; /*定义一个全局变量,用来取定时器函数,并在没有鼠标事件的时候清除定时器*/ /*通过定时器实现banner图的每3000毫秒切换一次的效果的changeStart()函数*/ function changeStart(){ aaa=setInterval(function(){ if (num<=6) { bannerImg.style.transition="all 1s linear"; bannerImg.style.left=(-716.8)*(num)+"px"; num++; }else{ bannerImg.style.transition="all 0s linear"; /*消除num=0时,bannerImg移动的过渡效果*/ num=0; bannerImg.style.left=(-716.8)*(num)+"px"; } console.log("哈哈哈继续"); },3000) } changeStart(); /*以下是当鼠标悬浮在banner图上时,图片停止自动切换的changeStop()函数*/ function changeStop(){ clearInterval(aaa); console.log("停止他"); } /*以下是点击按钮实现对应banner图切换的change()函数*/ function buttonChange(Num){ num=Num+1; bannerImg.style.transition="all 0s linear"; bannerImg.style.left=(-716.8)*(Num)+"px"; } /*以下是点击左右两个按钮实现banner图切换的buttonChange()函数*/ function asideChange(x){ /*通过传递形参x,判断往左/往右切换banner图*/ if (num!=6&&x==1) { num++; }else if(num==6&&x==1){ num=0; }else if(num!=0&&x==0){ num--; } else if(num==0&&x==0){ num=5; } bannerImg.style.transition="all 0s linear"; bannerImg.style.left=(-716.8)*(num)+"px"; } </script> </html>

  但是经过博主的测试,发现程序存在一定的瑕疵,第一张图片的保留时间比其他图片长,而且每次重新开启定时器均存在这个问题。暂时博主还没有比较简单

省事的方法改良他,所以仅供参考思路,以后要用,当然还是jQuery省事啦!

  如果存在错误,欢迎朋友们指出,我们一起探讨,改良代码!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

最后

以上就是爱听歌小土豆最近收集整理的关于原JS实现banner图的常用功能的全部内容,更多相关原JS实现banner图内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(113)

评论列表共有 0 条评论

立即
投稿
返回
顶部