js实现无缝滚动双图切换效果

本文记录的是在html中写两个img实现多张图片的无缝滚动,供大家参考,具体内容如下

html结构如下:

<div class="wrap">

<ul class="list">

<li>

<img src="img/img0.png">

</li>

<li>

<img src="img/img1.png">

</li>

</ul>

<a href="javascript:;" class="prev">prev</a>

<a href="javascript:;" class="next">next</a>

</div>

css样式不再详述,想要使图片位置发生变化,方法有很多。此次用的是定位,修改.list的left值。

js代码如下:

(function(){

var list=document.querySelector(".list");

var imgs=document.querySelectorAll("img");

var prev=document.querySelector(".prev");

var next=document.querySelector(".next");

var imgW=css(imgs[0],"width");//使用封装好的css()获取img的宽度

var now=0;

var imgData=["img/img0.png",

"img/img1.png",

"img/img2.png",

"img/img3.png",];

prev.onclick=function(){

//找出接下来要显示的图片的下标

var prev=(now-1+imgData.length)%imgData.length;

//因为是从右往左运动,当前显示的应在右侧,即将显示的在左侧

imgs[0].src=imgData[prev];

imgs[1].src=imgData[now];

//使用封装好的css()设置list的位置

css(list,"left",-imgW);

//使用封装好的运动函数来控制图片移动

startMove(list,{left:0},2000,"easeOut");

now=prev;

}

next.onclick=function(){

var next=(now+1)%imgData.length;

imgs[0].src=imgData[now];

imgs[1].src=imgData[next];

css(list,"left",0);

startMove(list,{left:-imgW},2000,"easeOut");

now=next;

}

})();

到这一步,大体功能已经实现。但是当频繁点击上一张/下一张按钮时,会发现图片在设定的运动时间闪换。解决这个问题有两个办法:1.减小运动时间,如将2000ms改为500ms,2.限定定时器只能开一个。

在上述js代码基础上增加以下代码,以上一张操作为例,增加定时器个数判断。

var isMove=false;//记录定时器开关状态

prev.onclick=function(){

if(isMove){

return;

}

....上述上一张操作js代码

isMove=true;

startMove(list,{left:-imgW},2000,"easeOut",function(){

isMove=false;

});

}

以上是 js实现无缝滚动双图切换效果 的全部内容, 来源链接: utcz.com/z/346222.html

回到顶部