原生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 相关文章推荐
IE6下拉框图层问题探讨及解决
Jan 03 Javascript
JavaScript取得WEB安全颜色列表的方法
Jul 14 Javascript
javascript类型系统 Array对象学习笔记
Jan 09 Javascript
jQuery+css实现炫目的动态块漂移效果
Jan 28 Javascript
ionic中列表项增加和删除的实现方法
Jan 22 Javascript
原生Aajax 和jQuery Ajax 写法个人总结
Mar 24 jQuery
对vue.js中this.$emit的深入理解
Feb 23 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
Jul 30 Javascript
vue实现路由切换改变title功能
May 28 Javascript
原生js实现的移动端可拖动进度条插件功能详解
Aug 15 Javascript
Vue插件之滑动验证码用法详解
Apr 05 Javascript
Element Popover 弹出框的使用示例
Jul 26 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
linux命令之调试工具strace的深入分析
2013/06/03 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
jquery ajax abort()的使用方法
2010/10/28 Javascript
JavaScript中的replace()方法使用详解
2015/06/06 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
js类式继承与原型式继承详解
2016/04/07 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
webpack v4 从dev到prd的方法
2018/04/02 Javascript
在Vue methods中调用filters里的过滤器实例
2018/08/30 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
ES6中的Javascript解构的实现
2020/10/30 Javascript
使用Python中的cookielib模拟登录网站
2015/04/09 Python
python自动化脚本安装指定版本python环境详解
2017/09/14 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
Tensorflow 多线程与多进程数据加载实例
2020/02/05 Python
Django 解决由save方法引发的错误
2020/05/21 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
荷兰在线啤酒店:Beerwulf
2019/08/26 全球购物
英文求职信写作小建议
2014/02/16 职场文书
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
创文明城市标语
2014/06/16 职场文书
室内趣味活动方案
2014/08/24 职场文书
大学生学习计划书
2014/09/15 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
签订劳动合同通知书
2015/04/16 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL