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 相关文章推荐
JavaScript初学者应注意的七个细节小结
Jan 30 Javascript
js绑定事件this指向发生改变的问题解决方法
Apr 23 Javascript
JavaScript回调(callback)函数概念自我理解及示例
Jul 04 Javascript
推荐一个自己用的封装好的javascript插件
Jan 29 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
Apr 03 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
Dec 25 Javascript
Gulp实现静态网页模块化的方法详解
Jan 09 Javascript
vue之浏览器存储方法封装实例
Mar 15 Javascript
js实现简单选项卡功能
Mar 23 Javascript
vue单文件组件lint error自动fix与styleLint报错自动fix详解
Jan 08 Javascript
怎么理解wx.navigateTo的events参数使用详情
May 18 Javascript
详解Vue的sync修饰符
May 15 Vue.js
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
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
js实现按钮控制图片360度翻转特效的方法
2015/02/17 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
深入理解angularjs过滤器
2016/05/25 Javascript
Vue.js路由组件vue-router使用方法详解
2016/12/02 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
详解angular应用容器化部署
2018/08/14 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
Python使用python-docx读写word文档
2019/08/26 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
2020/06/12 Python
Django跨域请求原理及实现代码
2020/11/14 Python
Python中的面向接口编程示例详解
2021/01/17 Python
中职生自我鉴定范文
2013/10/03 职场文书
高校自主招生自荐信
2013/12/09 职场文书
秋季运动会通讯稿
2014/01/24 职场文书
给朋友的赠语
2015/06/23 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
《乙女游戏世界对路人角色很不友好》OP主题曲无字幕动画MV公开
2022/04/05 日漫
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技