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技巧之不要用for in语句对数组进行遍历
Oct 20 Javascript
javascript中的取反再取反~~没有意义
Apr 06 Javascript
js取得html iframe中的元素和变量值
Jun 30 Javascript
js 左右悬浮对联广告代码示例
Dec 12 Javascript
jquery实现的简单二级菜单效果代码
Sep 22 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
Jun 10 Javascript
使用yeoman构建angular应用的方法
Aug 14 Javascript
vue结合axios与后端进行ajax交互的方法
Jul 06 Javascript
基于Vue 服务端Cookies删除的问题
Sep 21 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
Jun 12 jQuery
js脚本中执行java后台代码方法解析
Oct 11 Javascript
js实现简单图片拖拽效果
Feb 22 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
用php代码限制国内IP访问我们网站
2015/09/26 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
jQuery中unwrap()方法用法实例
2015/01/16 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
JS实现来回出现文字的状态栏特效代码
2015/10/31 Javascript
js实现简单的验证码
2015/12/25 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
浅谈python多线程和队列管理shell程序
2015/08/04 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
Python同步遍历多个列表的示例
2019/02/19 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
上海中网科技笔试题
2012/02/19 面试题
追悼会上的答谢词
2014/01/10 职场文书
给全校老师的建议书
2014/03/13 职场文书
义务教育学校标准化建设汇报材料
2014/08/16 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android