简单的js轮播图 轮播图在制作网页方面是一个比较重要的内容,轮播图有很多方法去实现,最简单的是通过Bootstrap框架来实现,这里主要针对还没学习框架只是使用js+html+css来实现轮播图自动播放。 这里还是参照成都大学教务系统的轮播图来说明如何使用js制作轮播图 轮播图要实现的功能:1.轮播图能自动播放 2.左右两边有箭头按钮,点击能切换图片 3.图片下方有小圆点图标,图片滑动圆点会跳到相应的图片页,并且点击小圆点能切换到相应图片页。 下面是代码部分: html代码:
<body> <div class="wrap"> <ul class="list"> <li class="item active"><img src="图片/1p.jpg"></li> <li class="item"><img src="图片/2p.jpg"></li> <li class="item"><img src="图片/3p.jpg"></li> <li class="item"><img src="图片/4p.jpg"></li> <li class="item"><img src="图片/5p.jpg"></li> </ul> <ul class="pointList"> <li class="point active" data-index='0'></li><!--在标签里存入数据 --> <li class="point" data-index='1'></li> <li class="point" data-index='2'></li> <li class="point" data-index='3'></li> <li class="point" data-index='4'></li> </ul> <button type="button" class="btn" id="goPre" onclick="goPre()"><</button> <button type="button" class="btn" id="goNext" onclick="goNext()">></button> </div>CSS代码:
.wrap{ width:800px; height:400px; position:relative; } .list{ width:800px; height:400px; list-style:none; position: relative; padding-left: 0px; } .item{ width:100%;/*继承list的宽度*/ height: 100%; position: absolute; opacity: 0; transition:all .5s; } .btn{ width:50px; height:100px; position:absolute; top:150px; z-index: 100; cursor: pointer; } /* 左图标 */ #goPre{ left:0px; } /* 右图标 */ #goNext{ right:0px; } /* 图片大小 */ img{ width:800px; height:400px; } /* 控制显示图片*/ .item.active{ z-index: 10; opacity: 1; } .pointList{ padding-left: 0px; list-style-type: none; position:absolute; right:20px; bottom: 20px; z-index: 1000; }/* 设置圆点图标的相应属性 */ .point{ width:10px; height:10px; background-color: rgba(0,0,0,0.4); border-radius: 100%; float:left; margin-right: 20px; border-style: solid; border-width: 2px; border-color:#312f2f99; cursor: pointer; } .point.active{ border-color:hsla(0, 59%, 58%, 0.952) }js代码:
var items=document.getElementsByClassName("item"); var points=document.getElementsByClassName("point"); var index=0;//index表示第几张图片在展示 // 清除函数 var clearActive=function(){ for(var i=0;i<items.length;i++){ items[i].className="item"; } for(var i=0;i<points.length;i++){ points[i].className="point"; } } var goIndex=function(){ clearActive(); points[index].className="point active"; items[index].className="item active"; } // 切换下一张图片 var goNext=function(){ if(index<4){ index++; }else{ index=0; } goIndex(); } // 切换上一张图片 var goPre=function(){ if(index==0){ index=4; }else{ index--; } goIndex(); } // 点击圆点切换相应图片 for(var i=0;i<points.length;i++){ points[i].addEventListener('click',function(){ var pointIndex=this.getAttribute("data-index"); index=pointIndex; goIndex(); }) } // 图片自动播放 var time=0; setInterval(function(){ time++; if(time==20){ goNext(); time=0; } },100)总结:这个轮播图的实现不仅需要熟练掌握并正确使用js相关函数及事件,还要熟练使用position属性来对相关的按钮进行布局,如果不使用absolute进行绝对定位那么当浏览器窗口缩小时相应图片会出现流动的效果,这样的用户体验是十分糟糕的,所以在实现代码时切忌要将相应图标定位。自己在写这个轮播图的时候也会粗心大意忘记将图标定位,可能还是对盒子模型的有些知识点理解的不是很到位,所以在往后学习的同时也会继续巩固前面学到的内容