详解JavaScript实现动态的轮播图效果

利用javascript能实现常见的动态的网页轮播图效果,如下图1所示:

详解JavaScript实现动态的轮播图效果

图1

实现该轮播图有以下几个要点:

(1)在左右两侧各有一个箭头,分别指的是向左和向右切换,即点击相应的位置就会切换到该图片之前(或之后)的一张图片

(2)在图片的下方有一排圆形按钮,每个按钮有各自的单击事件,点击任意一个按钮就切换到对应的图片

(3)不点击图片时,图片会自动播放,即有一个图片轮播效果

首先可以写出大概的HTML代码为代码1:

代码1:

<div> <div> //设置图像的父级元素定位为向左600px,即是左移一个图片的宽度 <img src="https://www.jb51.net/images/16.jpg" alt="1"> //设置的是5张图片自动轮播,此处会有7张图片,并且红色代码表示的图片和 <img src="https://www.jb51.net/images/12.jpg" alt="1"> 蓝色代码表示的图片是相同的。这是因为每张图片都有向前和向后两种单击 <img src="https://www.jb51.net/images/13.jpg" alt="2"> 事件,要使第一张图片向前单击显示第五张图片,就需要在其前方添加第五 <img src="https://www.jb51.net/images/14.jpg" alt="3"> 张图片,避免在第一张图片单击向左时显示空白;同理,在第五张图片之 <img src="https://www.jb51.net/images/15.jpg" alt="4"> 后也要添加第一张图片,使其实现平稳过渡 <img src="https://www.jb51.net/images/16.jpg" alt="5"> <img src="https://www.jb51.net/images/12.jpg" alt="5"> </div> <div> //设置相对应的按钮,并未按钮添加对应的自定义属性 index <span index="1"></span> <span index="2"></span> <span index="3"></span> <span index="4"></span> <span index="5"></span> </div> <a href="#">&lt;</a> //此处的a表示的是箭头;&lt;(左箭头),&gt;(右箭头) <a href="#">&gt;</a> </div>

在上例中,图片的宽是600px,高是400px;

然后再设置其CSS样式为代码2:

代码2:

*{margin: 0;padding: 0;text-decoration: none;} //设置所有元素的基本样式 body{padding: 20px;} #container{ position: relative; //设置最外层的div元素的定位为相对定位,即是相对与未设置定位之前的位置进行定位 width: 600px; height: 400px; border: 3px solid #333; overflow: hidden; //设置容器的宽高,并将溢出部分设置为隐藏 } #list{ position: absolute; //设置图片所在的父级div的定位为绝对定位,即是相对于已定位的父级元素进行定位 z-index: 1; //设置该div的显示层次 width: 4200px; //该div是所有图片的父级元素,因此其宽高的设置应该包含所有的图片 height: 400px; } #list img{ float: left; //设置图片的显示的显示方式,为向左浮动 width: 600px; height: 400px; } #buttons{ position: absolute; //设置屏幕下方的所有圆点的定位方式,相对于容器元素进行绝对定位 left: 250px; //距离父级已进行定位的元素的左侧距离为250px bottom: 20px; z-index: 2; //设置圆点的显示层级为2,即是在图片div的上方 height: 10px; width: 100px; } #buttons span{ float: left; margin-right: 5px; width: 10px; height: 10px; border: 1px solid #fff; border-radius: 50%; //半径为50%,即是设置为圆点显示 background: #333; cursor: pointer; } #buttons .on{ background: orangered; } .arrow{ position: absolute; //设置按钮的定位方式,即是相对与容器元素进行绝对定位 top: 180px; z-index: 2; display: none; width: 40px; height: 40px; font-size: 36px; font-weight: bold; line-height: 39px; text-align: center; color: #fff; background-color: rgba(0,0,0,.3); cursor: pointer; } .arrow:hover{ background-color: rgba(0,0,0,.7); } #container:hover .arrow{ display: block; } #prev{ left: 20px; } #next{ right: 20px; }*/

设置完基本的样式之后,其显示效果如图2所示:

详解JavaScript实现动态的轮播图效果

图2

此时需要给特定的元素添加事件,如下列的代码3所示:

代码3:

window.onload=function(){ var list=document.getElementById('list'); //获取图片元素的父级元素,并命名为list var prev=document.getElementById('prev'); //获取左箭头 var next=document.getElementById('next'); //获取右箭头 function animate(offset){ //设置一个名为animate的函数,该函数接收一个参数 var newleft=parseInt(list.style.left)+offset; //获取图片的父级元素的左侧的定位值,并加上传入的参数offset if(newleft<-3000){ //图片的父级div在移动的过程中,显示的图片的定位都是负值,如图3所示 list.style.left= -600+'px'; //但图片显示到五张图片上的最后一张时,自动跳转到第一张图片 }else if(newleft>-600){ //当在第一张图片上单击向左的按钮时,自动跳转到最后一张 list.style.left= -3000+'px'; }else{ list.style.left=newleft+'px'; } }

函数animate()中获取的是style.left,是相对左边获取距离,所以第一张图后style.left都为负值,如图3所示:

详解JavaScript实现动态的轮播图效果

图3

结合上述的代码3,我们可设置向左和向右的按钮的单击事件,如代码4所示:

代码4:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/e6e599a9b9dd3e7a4185c7f364f44da1.html