视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
js实现无缝滚动双图切换效果
2020-11-27 21:53:59 责编:小采
文档


本文记录的是在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; 
 });
}

下载本文
显示全文
专题