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异步对象(XMLHttpRequest)
Nov 17 Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
Mar 14 Javascript
jQuery动画效果相关方法实例分析
Dec 31 Javascript
实用又漂亮的BootstrapValidator表单验证插件
May 30 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
Jun 12 Javascript
微信小程序(三):网络请求
Jan 13 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
Mar 21 Javascript
官方推荐react-navigation的具体使用详解
May 08 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
Jun 05 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
Sep 20 Javascript
小程序跨页面交互的作用与方法详解
Jan 07 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
Mar 03 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计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
2014/01/06 PHP
php实现加减法验证码代码
2014/02/14 PHP
CI框架验证码CAPTCHA辅助函数用法实例
2014/11/05 PHP
php检测数组长度函数sizeof与count用法
2014/11/17 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
JavaScript 异步调用框架 (Part 6 - 实例 &amp; 模式)
2009/08/04 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
jquery实现右侧栏菜单选择操作
2016/03/04 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
python 调用win32pai 操作cmd的方法
2017/05/28 Python
python测试mysql写入性能完整实例
2018/01/18 Python
Python实现简易版的Web服务器(推荐)
2018/01/29 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
python集合常见运算案例解析
2019/10/17 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
python中编写函数并调用的知识点总结
2021/01/13 Python
HTML5的结构和语义(5):内嵌媒体
2008/10/17 HTML / CSS
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
制衣厂各岗位职责
2013/12/02 职场文书
《月迹》教学反思
2014/02/19 职场文书
幼儿园开学寄语
2014/04/03 职场文书
高中生个性发展自我评价
2015/03/09 职场文书
2015年三万活动总结
2015/03/25 职场文书
关于企业的执行力标语大全
2020/01/06 职场文书
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python