原生js实现移动端触摸轮播的示例代码


Posted in Javascript onDecember 22, 2017

PC端上实现图片轮播效果很简单,只要通过使用click事件就可以非常简单的实现效果,但是在移动端上,就要通过核心的touch事件来实现。

下面是移动端手指滑动轮播图的完整代码。

<!DOCTYPE html> 
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<style>
*{margin:0;padding:0;}
li{list-style:none;}
.lb{width:320px;height:130px;position:relative;margin:20px auto;overflow: hidden;}
.lb .lb_img{width:2240px;height:130px;position:absolute;left:-320px;}
.lb .lb_img img{width:320px;height:130px;float:left;display:block;}
.lb ul{width:35px;height:4px;position:absolute;bottom:10px;left:50%;margin-left:-15px;}
.lb ul li{width:4px;height:4px;border-radius:2px;border:0.25px solid #fff;margin-left:2.5px;background:#666;float:left;cursor:pointer;}
.lb ul .active{background:#fff;}
.lb ul li:hover{background:#fff;}
</style>
</head>
<body>
<div class="lb">
		<div class="lb_img">
			<img src="img/4.jpg">
			<img src="img/0.jpg">
			<img src="img/1.jpg">
			<img src="img/2.jpg">
			<img src="img/3.jpg">
			<img src="img/4.jpg">
			<img src="img/0.jpg">
		</div>
		<ul>
			<li class="active"></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
		</ul>
</div>	
<script>
var lb = document.querySelector(".lb");
var lb_img = document.querySelector(".lb .lb_img");
var img = document.querySelectorAll(".lb .lb_img img")
var lis = document.querySelectorAll(".lb ul li");
var i=2;
 // 初始化手指坐标点
 var startPoint = 0;
 var startEle = 0;
 //手指按下
 lb.addEventListener("touchstart",function(e){
 startPoint = e.changedTouches[0].pageX;
 startEle = lb_img.offsetLeft;
 clearInterval(Time)
 });
 
 //手指滑动
 lb.addEventListener("touchmove",function(e){
 var currPoint = e.changedTouches[0].pageX; 
 var disX = currPoint - startPoint;
 var left = startEle + disX;
 lb_img.style.left = left + "px"; 
 });
 //当手指抬起的时候,
 lb.addEventListener("touchend",function(e){
 	var currPoint = e.changedTouches[0].pageX;
 	var disX = - (currPoint - startPoint);
 var left = startEle + disX;
 if(disX > 150){
 		i++;
	 	for(var q=0;q<lis.length;q++){
	  lis[q].className = ''; 
	 }
	 if(i == 7){
	 	i=2;
	 }
	 lis[i-2].className= "active" ;	 	
 	lb_img.style.left = -320*(Math.round(disX/320)+i+1)+ 'px'; 		
 }else{
 	lb_img.style.left = -320*(i-1) + "px";
 }
 if(disX < -150){
 	i--;
 	for(var q=0;q<lis.length;q++){
  lis[q].className = '';
  }
  if(i == 1){
 		i=6;
 	}
 	lis[i-2].className= "active" ; 		
 	lb_img.style.left = -320*(Math.round(-disX/320)+i-2) + 'px';
	 	
 }else{
 	lb_img.style.left = -320*(i-1) + "px";
 }
 Time=setInterval(autoplay,2000);
 })
//设置定时器
Time=setInterval(autoplay,2000);
 function autoplay(){
 i++;
 for(var q=0;q<lis.length;q++){
 lis[q].className = ''; 
 }
 if(i == 7){
 i=2;
 }
 lis[i-2].className= "active" ; 
 for(var a=0; a<320;a++){
  setTimeout(function(){
   var left = lb_img.style.left ? lb_img.style.left : "-320px";
   left = parseInt(left)-1;
   if(left<-1920){
   left=-321;
   }
   lb_img.style.left = left + "px";
  },a);
 }
 }
</script>
</body>
</html>

以上这篇原生js实现移动端触摸轮播的示例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
ExtJS4给Combobox设置列表中的默认值示例
May 02 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
Feb 05 Javascript
javascript清空table表格的方法
May 14 Javascript
Javascript实现图片不间断滚动的代码
Jun 22 Javascript
最全的Javascript编码规范(推荐)
Jun 22 Javascript
node.js中 stream使用教程
Aug 28 Javascript
基于vue实现多引擎搜索及关键字提示
Mar 16 Javascript
js事件委托和事件代理案例分享
Jul 25 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
Mar 09 Javascript
js实现图片上传即时显示效果
Sep 30 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
Nov 15 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 Javascript
JavaScript多线程运行库Nexus.js详解
Dec 22 #Javascript
JS实现在文本指定位置插入内容的简单示例
Dec 22 #Javascript
JavaScript实现单例模式实例分享
Dec 22 #Javascript
vue使用axios时关于this的指向问题详解
Dec 22 #Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 #Javascript
vue init失败简单解决方法(终极版)
Dec 22 #Javascript
使用axios实现上传图片进度条功能
Dec 21 #Javascript
You might like
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
js 对象是否存在判断
2009/07/15 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
jquery动态加载js/css文件方法(自写小函数)
2014/10/11 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
nodeJS代码实现计算交社保是否合适
2015/03/09 NodeJs
javascript常用函数(1)
2015/11/04 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
微信公众号  提示:Unauthorized API function 问题解决方法
2016/12/05 Javascript
jquery DataTable实现前后台动态分页
2017/06/17 jQuery
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
element-ui 设置菜单栏展开的方法
2018/08/22 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
Python实现Dijkstra算法
2018/10/17 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
银行办理业务介绍信
2014/01/18 职场文书
教师节商场活动方案
2014/02/13 职场文书
企业指导教师评语
2014/04/28 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
2015年度女工工作总结
2015/10/22 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
MySQL三种方式实现递归查询
2022/04/18 MySQL