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


Posted in Javascript onJuly 09, 2019

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery Select操作方法集合脚本之家特别版
May 17 Javascript
基于jQuery的图片大小自动适应实现代码
Nov 17 Javascript
纯文字版返回顶端的js代码
Aug 01 Javascript
JavaScript html5 canvas绘制时钟效果(二)
Mar 27 Javascript
jQuery实现的tab标签切换效果示例
Sep 05 Javascript
基于vue2的table分页组件实现方法
Mar 20 Javascript
JS实现左边列表移到到右边列表功能
Mar 28 Javascript
微信小程序表单弹窗实例
Jul 19 Javascript
原生JavaScript实现remove()和recover()功能示例
Jul 24 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
Nov 02 Javascript
10个最受欢迎的 JavaScript框架(推荐)
Apr 24 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
Jul 18 Javascript
DatePickerDialog 自定义样式及使用全解
Jul 09 #Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
Jul 09 #Javascript
bootstrap datepicker的基本使用教程
Jul 09 #Javascript
JavaScript常用内置对象用法分析
Jul 09 #Javascript
JavaScript遍历数组和对象的元素简单操作示例
Jul 09 #Javascript
JavaScript中BOM对象原理与用法分析
Jul 09 #Javascript
jquery多级树形下拉菜单的实例代码
Jul 09 #jQuery
You might like
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
基于php下载文件的详解
2013/06/02 PHP
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
2013/05/08 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
jQuery图片加载显示loading效果
2016/11/04 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
2017/01/17 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
vue-cli配置环境变量的方法
2018/07/09 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
详解Python中的条件判断语句
2015/05/14 Python
Python脚本利用adb进行手机控制的方法
2019/07/08 Python
Python图像识别+KNN求解数独的实现
2020/11/13 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
测控技术与仪器个人求职信范文
2013/12/30 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
安全例会汇报材料
2014/08/23 职场文书
党员演讲稿
2014/09/04 职场文书
酒会开场白大全
2015/06/01 职场文书
团干部培训班心得体会
2016/01/06 职场文书
python urllib库的使用详解
2021/04/13 Python
python+opencv实现视频抽帧示例代码
2021/06/11 Python