js改变透明度实现轮播图的算法
前面有分享过改变层级的轮播图算法,今天继续利用透明度来实现无位移的轮播图算法。
实现逻辑:将所有要轮播的图片全部定位到一起,即一层一层摞起来,并且利用层级的属性调整正确的图片顺序,将图片的透明度全部设置为0,然后在让初始的第一张图片的透明度为1即可,具体算法如下:
<!DOCTYPEhtml> <html> <head> <metacharset="utf-8"> <title>改变透明度算法(经典)</title> <stylemedia="screen"> *{ margin:0; padding:0; } .wrap{ width:60%; margin:auto; position:relative; } .wrapimg{ width:100%; position:absolute; left:0; top:0; transition:2s; } .wrapimg:nth-child(1){ position:relative; } .wrap.follow{ width:150px; height:30px; margin:auto; display:flex; justify-content:space-between; } .wrap.followspan{ width:10px; height:10px; border-radius:50%; border:3pxsolidgray; } .wrap.followspan:hover{ cursor:pointer; } </style> </head> <body> <divclass="wrap"> <imgsrc="img/01.jpg"alt=""/> <imgsrc="img/02.jpg"alt=""/> <imgsrc="img/03.jpg"alt=""/> <imgsrc="img/04.jpg"alt=""/> <inputid="leftBut"type="button"name="name"value="◀︎"> <inputid="rightBut"type="button"name="name"value="▶︎"> <divclass="follow"> <span></span> <span></span> <span></span> <span></span> </div> </div> </body> <scripttype="text/javascript"> //获取所需元素 varimages=document.querySelectorAll('.wrapimg'); varspans=document.querySelectorAll('.followspan'); varleftBut=document.getElementById('leftBut'); varrightBut=document.getElementById('rightBut'); //定义有参函数 functionshowImage(index){ for(vari=0;i<images.length;i++){ spans[i].index=i;//自定义属性,得到对应的下标 images[i].index=i;//自定义属性,得到对应的下标 images[i].style.zIndex=100-i;//为图片排列顺序 images[i].style.opacity='0';//将图片透明度全部赋值为0 spans[i].style.background='gray';//圆点北京色全部设置为黑色 } //将传入参数下标值的图片透明度赋值为1 images[index].style.opacity='1'; //将传入参数下标值的图片的背景色赋值为white spans[index].style.background='white'; } showImage(0);//初始设置下标为0的图片和圆点的样式 varcount=1;//获取计数器 //定义自动轮播函数 functionimageMove(){ //判断count的值如果能被4整除,则将count重新赋值为0; if(count%4==0){ count=0; } //将count值当做参数传给函数showImage(); showImage(count); count++;//执行一次+1 } //设置两秒调用一次函数imageMove(),并且赋值给imageInitailMove varimageInitailMove=setInterval('imageMove()',2000); //向左点击事件 leftBut.onclick=function(){ //先清除定时器 clearInterval(imageInitailMove); //由于和自动轮方向相反所以要判断count的值当值为0时,重新赋值为4,继续循环 if(count==0){ count=4; } count--; showImage(count);//调用函数count先自- imageInitailMove=setInterval('imageMove()',2000); } //向右的点击事件 rightBut.onclick=function(){ clearInterval(imageInitailMove); imageMove();//由于和自动轮播的方向相同所以直接调用 //重新为定时器赋值 imageInitailMove=setInterval('imageMove()',2000); } //圆点的点击事件 for(vari=0;i<spans.length;i++){ spans[i].onclick=function(){ clearInterval(imageInitailMove); //将当前点击的圆点的下标值赋值给count count=event.target.index; //调用函数 showImage(count); imageInitailMove=setInterval('imageMove()',2000); } } </script> </html>
精彩专题分享:jQuery图片轮播JavaScript图片轮播Bootstrap图片轮播
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。