3-4图片自动轮播

3-4图片自动轮播

老师

function changeImg(){

   pics[index].style.display="block";

}按照视频中,应该在鼠标触碰离开后,图片能自动轮播到最后一张图然后停止。然而我测试时图片一直停留在第一张图,无法实现轮播。为什么?

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
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>b</title>
  <!-- <link rel="stylesheet" type="text/css" href="css/styleb.css">  -->
  <style type="text/css">
    *{
  margin: 0;
  padding: 0;
}
ul{
  list-style: none;
}
body{
  font-family: "微软雅黑";
}
.main,.banner,.banner-slide{
  width: 1200px;
  height: 460px;
}
.main{
  margin: 30px auto;
  position: relative;
  overflow: hidden;
}
.banner{overflow: hidden;}
.banner-slide{display: none;}
.slide1{
  background-image: url('../img/bg1.jpg');
}
.slide2{
  background-image: url('../img/bg2.jpg');
}
.slide3{
  background-image: url('../img/bg3.jpg');
}
.slide-active{display: block;}
.button{
  width: 40px;
  height: 80px;
  background:url('../img/arrow.png') no-repeat center center;
  position: absolute;
    top: 50%;
    margin-top: -40px;
    left: 244px;
}
.next{
  left: auto;
  right: 0;
}
.prev{
  transform: rotate(180deg);
}
.button:hover{
  background-color:gray;
  opacity: 0.8;
  filter: alpha(opacity=80);
}
.dots{
  position: absolute;
  bottom: 24px;
  right: 20px;
}
.dots span{
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background:rgba(7,17,27,0.4);
  box-shadow: 0 0 0 2px rgba(255,255,255,0.8) inset;
  display: inline-block;
  margin-left: 8px;
  cursor: pointer;
}
span.active{
  background:white;
  box-shadow: 0 0 0 2px rgba(7,17,27,0.4) inset;
}
  </style>
</head>
<body>
  <div class="main" id="main">
    <!-- 图片轮播 -->
    <div class="banner" id="banner">
      <a href=""><div class="banner-slide slide1 slide-active"></div></a>
      <a href=""><div class="banner-slide slide2"></div></a>
      <a href=""><div class="banner-slide slide3"></div></a>      
    </div>
    <!-- 按钮-->
    <a href="javascript:void(0)" class="button prev"></a>
    <a href="javascript:void(0)" class="button next"></a>
    <!-- 圆点 -->
    <div class="dots" id="dots">
      <span class="active"></span>
      <span></span>
      <span></span> 
    </div>
  </div>
  <script type="text/javascript">
    function byId(id)
{
  return typeof(id)==='string'?document.getElementById(id):id;
}
var main=byId('main'),
    timer=null,
    index=0,
    len=byId('banner').getElementsByTagName('div').length,
    pics=byId('banner').getElementsByTagName('div');
 
function picSlide(){
  main.onmouseover=function(){
       // 清除定时器
  }
  main.onmouseout=function(){
    setInterval(function(){
           index++;
           if(index>=len)
           {
            index=0;
           }
           changeImg();
    },2000)
  }
}
function changeImg(){
   // for(var i=0;i<len;i++)
   // {
   //   pics[i].style.display='none';
   // }
   pics[index].style.display="block";
}
picSlide();
  </script>
</body>
</html>


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你好同学 , 因为你把如下代码注释了:

http://img1.sycdn.imooc.com//climg/5c1c913c000146f906600207.jpg

这样 ,当你轮播的时候 ,只会把当前的显示 ,而不会把其他的图片隐藏 , 因为当几张图片全部显示的时候 , 默认第一张在最上面 , 如下:

http://img1.sycdn.imooc.com//climg/5c1c919900016cff16090897.jpg

所以会一直显示第一张 . 把注释的加上即可 . 另外 , 建议在函数中自动调用图片轮播的事件 ,当页面打开时 ,默认进行图片切换 :

http://img1.sycdn.imooc.com//climg/5c1c91df00010e9705040382.jpg

希望能够帮到你 , 祝学习愉快 ,望采纳 .


  • 老师,3-4视频6分30秒钟说:三张图片全都display:block,会停留在最后一张图片,前两张图片会被覆盖掉。怎么与您说的相反啊?
    2018-12-21 16:41:47
好帮手慕夭夭 2018-12-21 19:37:25

你好同学 , 因为你的代码中没有给图片盒子设置定位 ,而视频中老师的设置了定位 , 所以效果才与视频中的不一样 . 如下视频中设置:

http://img1.sycdn.imooc.com//climg/5c1ccf6d000162cc06160177.jpg

定位之后产生的层级关系 , 第三张图片的层级是最大的 .你可以如下设置定位测试一下:

http://img1.sycdn.imooc.com//climg/5c1cd0000001c42a04020135.jpg

因为代码的区别才会产生不同的效果 , 希望解答了你的疑惑, 祝学习愉快 !

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码