时间:2021-05-26
本文记录的是在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; });}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
原生js实现轮播图效果(无缝滚动),供大家参考,具体内容如下效果图:代码:Document*{margin:0;padding:0;}li{list-style
div+css+javascript实现无缝滚动,marquee无缝滚动,无缝滚动,兼容firefox用marquee实现首尾相连循环滚动效果(仅IE):复制代
我之前写过一个简易版的自动+手动轮播图:简易轮播图但是这个轮播图在切换的时候是没有实现无缝滚动的,每张图片都是单张切换的,而不是滑动。现在用JQuery实现无缝
效果图:html代码:复制代码代码如下:无缝滚动,向右滚动无缝滚动,向左滚动111111111111222222222222333333333333344444
我们会看到很多的网站上会使用多张图片无缝滚动的效果。下面我就介绍几种纯JS实现多张图片的无缝滚动,并实现鼠标移到图片上运动停止的效果,可以控制图片左右滚动。1.