原生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 相关文章推荐
11款新鲜的jQuery插件[附所有demo下载]
Jan 24 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
Mar 28 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
Feb 27 Javascript
让人印象深刻的10个jQuery手风琴效果应用
May 08 Javascript
自己做的模拟模态对话框实现代码
May 23 Javascript
jquery如何改变html标签的样式(两种实现方法)
Jan 16 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
Oct 28 Javascript
jQuery基于正则表达式的表单验证功能示例
Jan 21 Javascript
JS实现图片预加载之无序预加载功能代码
May 12 Javascript
关于在mongoose中填充外键的方法详解
Aug 14 Javascript
layui 中select下拉change事件失效的解决方法
Sep 20 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
Oct 22 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来计算某个目录大小的方法
2014/04/01 PHP
浅析php单例模式
2014/11/25 PHP
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
深入探秘jquery瀑布流的实现
2016/01/30 Javascript
jQuery javascript获得网页的高度与宽度的实现代码
2016/04/26 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
electron-vue开发环境内存泄漏问题汇总
2019/10/10 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
Python3.x对JSON的一些操作示例
2017/09/01 Python
python numpy格式化打印的实例
2018/05/14 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
Python获取指定网段正在使用的IP
2020/12/14 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
印度尼西亚最完整和最大的在线药房网站:Farmaku.com
2019/11/23 全球购物
教师辞职报告范文
2014/01/20 职场文书
暑期社会实践感言
2014/02/25 职场文书
高中军训感言600字
2014/03/11 职场文书
工程部岗位职责范本
2015/04/11 职场文书
淮海战役观后感
2015/06/11 职场文书
Python闭包的定义和使用方法
2022/04/11 Python