原生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 相关文章推荐
JavaScript中的prototype使用说明
Apr 13 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
Jan 06 Javascript
js中数组Array的一些常用方法总结
Aug 12 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
May 08 Javascript
浅谈javascript对象模型和function对象
Dec 26 Javascript
Javascript实现计算个人所得税
May 10 Javascript
浅谈JavaScript异常处理语句
Jun 26 Javascript
VueJs与ReactJS和AngularJS的异同点
Dec 12 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
Oct 11 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
Aug 14 Javascript
ndm:NPM的桌面GUI应用程序
Oct 15 Javascript
JS中FileReader类实现文件上传及时预览功能
Mar 27 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
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
PHP5 面向对象程序设计
2008/02/13 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
2011/05/14 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
PHP类型约束用法示例
2016/09/28 PHP
php str_replace替换指定次数的方法详解
2017/05/05 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
一个简单的jQuery插件ajaxfileupload.js实现ajax上传文件例子
2014/06/26 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
2016/11/16 Javascript
bootstrap table单元格新增行并编辑
2017/05/19 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
详解Python中的__new__()方法的使用
2015/04/09 Python
Python中生成器和yield语句的用法详解
2015/04/17 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
Python 求数组局部最大值的实例
2019/11/26 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
美国存储和组织商店:The Container Store
2017/08/16 全球购物
巴西手表购物网站:eclock
2019/03/19 全球购物
毕业生自荐书模版
2014/01/04 职场文书
职务说明书范文
2014/05/07 职场文书
党员群众路线自我剖析材料
2014/10/06 职场文书
居住证明范文
2015/06/17 职场文书
2016教师党员学习心得体会
2016/01/21 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS