原生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 相关文章推荐
js的一些常用方法小结
Jun 29 Javascript
同时使用n个window onload加载实例介绍
Apr 25 Javascript
Javascript/Jquery——简单定时器的多种实现方法
Jul 03 Javascript
利用JS进行图片的切换即特效展示图片
Dec 03 Javascript
jQuery实现360°全景拖动展示
Mar 18 Javascript
浅谈jQuery构造函数分析
May 11 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
May 16 Javascript
介绍JavaScript的一个微型模版
Jun 24 Javascript
js从外部获取图片的实现方法
Aug 05 Javascript
仿ElementUI实现一个Form表单的实现代码
Apr 23 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
Jun 19 Javascript
详解javascript void(0)
Jul 13 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中使用redis队列操作实例代码
2013/02/07 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
PHP链表操作简单示例
2016/10/15 PHP
在js中使用&quot;with&quot;语句中跨frame的变量引用问题
2007/03/08 Javascript
实现JavaScript中继承的三种方式
2009/10/16 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
vue.js的手脚架vue-cli项目搭建的步骤
2017/08/30 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
Django自定义认证方式用法示例
2017/06/23 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
Python Unittest根据不同测试环境跳过用例的方法
2018/12/16 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
python系列 文件操作的代码
2019/10/06 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
Python如何读写字节数据
2020/08/05 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
Django缓存Cache使用详解
2020/11/30 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
关键字throw与throws的用法差异
2016/11/22 面试题
介绍一下Ruby中的对象,属性和方法
2012/07/11 面试题
自我鉴定思想方面
2013/10/07 职场文书
区域总监的岗位职责
2013/11/21 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
初二学生评语大全
2014/12/26 职场文书
节约用水广告语60条
2019/11/14 职场文书
python之django路由和视图案例教程
2021/07/26 Python
Redis全局ID生成器的实现
2022/06/05 Redis
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技