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 相关文章推荐
三种检测iPhone/iPad设备方向的方法
Apr 23 Javascript
node.js中的buffer.slice方法使用说明
Dec 10 Javascript
使用jQuery获得内容以及内容的属性
Feb 26 Javascript
常用DOM整理
Jun 16 Javascript
Angular的$http与$location
Dec 26 Javascript
简单易懂的天气插件(代码分享)
Feb 04 Javascript
ReactNative Image组件使用详解
Aug 07 Javascript
webpack下实现动态引入文件方法
Feb 22 Javascript
利用vue和element-ui设置表格内容分页的实例
Mar 02 Javascript
Vue组件Draggable实现拖拽功能
Dec 01 Javascript
详解JavaScript中精度失准问题及解决方法
Feb 04 Javascript
原生js实现表格循环滚动
Nov 24 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中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
php实现的css文件背景图片下载器代码
2014/11/11 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
js nextSibling属性和previousSibling属性概述及使用注意
2013/02/16 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
jQuery插件animateSlide制作多点滑动幻灯片
2015/06/11 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
使用django实现一个代码发布系统
2019/07/18 Python
django 单表操作实例详解
2019/07/30 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
Tory Burch美国官方网站:美国时尚生活品牌
2016/08/01 全球购物
澳大利亚家用电器在线商店:Billy Guyatts
2020/05/05 全球购物
应付会计岗位职责
2013/12/12 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
工伤事故证明
2014/10/20 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
安全生产隐患排查制度
2015/08/05 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
2015年教师节广播稿
2015/08/19 职场文书
婚礼答谢词范文
2015/09/29 职场文书
python 逐步回归算法
2021/04/06 Python
Python内置类型集合set和frozenset的使用详解
2022/04/26 Python