JS制作轮播图

JavaScript018

JS制作轮播图,第1张

轮播图是每个网站中必不可少的元素,那么如何用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():单击事件。