轮播图是每个网站中必不可少的元素,那么如何用JS制作轮播图呢?下面我就给大家分享一下。
工具/材料Sublime Text
01首先需要在Sublime中创建HTML文档,然后在文档的body区域中加入如下图所示的轮播图内容
02然后我们需要在style标签中给所添加的轮播图内容声明样式,如下图所示
03接下来我们就需要在script标签中实现轮播图的动画脚本内容了,如下图所示,注意script标签的type类型一定要是javascript
04最后我们运行界面程序,你就会看到如下图所示的轮播图了,点击左右的箭头和中间的圆点都可以进行轮播图的切换
工具/材料Sublime Text
01首先在Sublime Text下面准备一个html和5张图片,图片宽高为600px和400px,如下图所示
02然后在HTML页面中布局轮播图的结构,如下图所示,主要包括图片区域,圆形按钮,左右箭头
03接下来需要给轮播图页面布局声明一些样式,请按照下图所示的样式代码进行声明
04最后就是实现轮播图的JS脚本功能,如下图所示,主要包括前进,后退,自动播放的功能
05最后运行页面,你就会看到下图所示的轮播图效果,点击圆圈或者左右箭头可以切换轮播图
一.轮播图制作思路:就是通过修改每一张图片的透明度,让其每隔一段时间将其中的某一张图片透明度设为1,显示出来;而其它的设为0,不显示。从而实现一种图片轮流播放的效果。
思路比较简单:
1.首先让一组图片绝对定位,让其重叠在一起,
2.通过js获取相应的标签,为后面的步骤做铺垫
3、然后制作手动轮播:点击小方块按钮,显示相应图片。
(1)通过设置图片的透明度变化来控制图片的显示效果。(更简单的效果是直接修改display属性,用display:block让该图片显示出来,而设置display:none就可以把其他的图片隐藏起来,这两种方法原理相同。)
(2)当点击小圆点时使它相对应的图片显示并且当前li的背景颜色设置为白色;
4、点击左右箭头,实现向前向后轮播图片。
二.具体代码实现
首先来看Html结构代码:
<div class="box">
<ul id="boxul">
<li><img src="images/f1.jpg" alt=""></li>
<li><img src="images/f2.jpg" alt=""></li>
<li><img src="images/f3.jpg" alt=""></li>
<li><img src="images/f4.jpg" alt=""></li>
<li><img src="images/f5.jpg" alt=""></li>
</ul>
<ol id="boxol">
<li class="current">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ol>
<div class="prev" id="prev">prev</div>
<div class="next" id="next">next</div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
对其进行样式调整之后,图片都在同一个位置,可以先给第一图片设置为显示,其它的图片设为不显示。
下面来看js的代码:
*{
padding: 0
margin: 0
}
/* 长按标签会有蓝色背景 */
*::selection {
background: none
}
li{
list-style: none
}
/* 子绝父相 */
.box{
width: 800px
height: 500px
margin: 50px auto
position: relative
}
/* 设置所有的图片不显示 */
.box ul li {
width: 800px
height: 500px
position: absolute
opacity: 0
/* 过度显示图片 */
transition: all .8s
}
/* 设置第一张图片可见 */
.box ul li:first-child {
opacity: 1
}
/*左右箭头*/
.prev,
.next {
width: 80px
height: 40px
position: absolute
/* 背景色 */
background-color: rgba(0, 0, 0, .7)
/* 文字设置 */
color: white
text-align: center
line-height: 40px
/* 位置 */
top: 50%
margin-top: -20px
/* 鼠标移上去的效果 */
cursor: pointer
}
.next{
right: 0
}
.prev:active,
.next:active {
background-color: rgba(0, 0, 0, .5)
}
.prev:hover,
.next:hover{
background-color: rgba(0, 0, 0, .6)
}
/* 小方块的位置 */
.box ol{
position: absolute
right: 50px
bottom: 20px
}
.box ol li {
width: 20px
height: 20px
border: 1px solid #ccc
float: left
text-align: center
line-height: 20px
cursor: pointer
}
.current{
background-color: yellow
}
img{
width: 800px
height: 500px
}
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
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
js的具体代码如下:
//1.1获取ul元素
var boxul = document.getElementById("boxul")
var lis = boxul.querySelectorAll("li")
console.log(lis.length)
//1.2获取ol
var boxol = document.getElementById("boxol")
//获取Ol下面的li
var ol_lis = boxol.querySelectorAll("li")
//console.log(ol_lis)
//获得箭头
var prev = document.getElementById("prev")
var next = document.getElementById("next")
//给ol的li添加点击事件
for(var i = 0 i<ol_lis.lengthi++){
// console.log(i)
//给oll的i设置index
ol_lis[i].setAttribute("index",i)
ol_lis[i].onclick = function(){
for(var i = 0 i<ol_lis.lengthi++){
ol_lis[i].className = ""
lis[i].style.opacity = 0
}
this.className = "current"
var index = parseInt(this.getAttribute("index"))
lis[index].style.opacity = 1
}
}
//console.log(ol_lis)
//2.给next按钮注册点击事件,让所有的li的透明度变为0,让当前的透明度变为1
var index = 0
var old_li = lis[0]
var new_li
next.onclick = function(){
index++
// 到5时,切到第一张图
if(index == lis.length){
index = 0
}
old_li.style.opacity = 0
new_li = lis[index]
new_li.style.opacity = 1
old_li = new_li
//ol下li的颜色变化
for(var i =0i<lis.lengthi++){
ol_lis[i].className = ""
}
ol_lis[index].className = "current"
}
//3.给上一个按钮注册点击事件,让所有的li的透明度变为0,让当前的透明度变为1
// console.log(index)
// old_li.style.opacity =0
// new_li = lis[index]
// new_li.style.opacity = 1
prev.onclick = function(){
// 从第一张图到下标为4的图
if(index == 0){
index = lis.length
}
index--
old_li.style.opacity = 0
new_li = lis[index]
new_li.style.opacity = 1
old_li = new_li
//ol下li的颜色变化
for(var i =0i<lis.lengthi++){
ol_lis[i].className = ""
}
ol_lis[index].className = "current"
}
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
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
这里面实现的时候结合了css3的transition属性,让图片的切换有一个过渡效果
三、相关知识点。
1、获取DOM元素:
(1)document.getElementsById():通过id获取对象,id是唯一的,可以不获取。
(2)document.getElementsByClassName():通过class属性获取对象。
(3)document.getElementsByTagName():通过标签名获取对象。
(4)document.querySelectorAll():可通过所有获取。
2、(1)onmouseover():鼠标移上时事件;
(2)onmouseout():鼠标移开时事件;
3、onclick():单击事件。