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 相关文章推荐
纯JS实现动态时间显示代码
Feb 08 Javascript
Javascript模仿淘宝信用评价实例(附源码)
Nov 26 Javascript
jQuery回到顶部的代码
Jul 09 Javascript
jQuery用FormData实现文件上传的方法
Nov 21 Javascript
javascript动画系列之模拟滚动条
Dec 13 Javascript
JavaScript对象引用与赋值实例详解
Mar 15 Javascript
js实现自动图片轮播代码
Mar 22 Javascript
微信小程序的日期选择器的实例详解
Sep 29 Javascript
layui 上传文件_批量导入数据UI的方法
Sep 23 Javascript
javascript实现滚动条效果
Mar 24 Javascript
Vue 的 v-model用法实例
Nov 23 Vue.js
Vue中foreach数组与js中遍历数组的写法说明
Jun 05 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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
Jquery中CSS选择器用法分析
2015/02/10 Javascript
AngularJS中isolate scope的用法分析
2016/11/22 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
js canvas实现写字动画效果
2018/11/30 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
three.js如何实现3D动态文字效果
2021/03/03 Javascript
介绍Python中的__future__模块
2015/04/27 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
浅谈Python 中整型对象的存储问题
2016/05/16 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
英国皇家邮政海外旗舰店:Royal Mail
2018/02/21 全球购物
Monki官网:斯堪的纳维亚的独立时尚品牌
2020/11/09 全球购物
高中化学教学反思
2014/01/13 职场文书
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
会员活动策划方案
2014/08/19 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
自查自纠整改报告
2014/11/06 职场文书
2015年公司工作总结
2015/04/25 职场文书