原生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 支持链式调用的异步调用框架Async.Operation
Aug 04 Javascript
jQuery根据纬度经度查看地图处理程序
May 08 Javascript
JS防止用户多次提交的简单代码
Aug 01 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
Mar 03 Javascript
谈谈Jquery中的children find 的区别有哪些
Oct 19 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
May 09 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
Feb 19 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
Apr 28 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
Jul 24 Javascript
详解Vue前端对axios的封装和使用
Apr 01 Javascript
教你使用vue-cli快速构建的小说阅读器
May 13 Javascript
Laravel admin实现消息提醒、播放音频功能
Jul 10 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会员权限控制实现原理分析
2011/05/29 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
javascript 类定义的4种方法
2009/09/12 Javascript
javascript 鼠标悬浮图片显示原图 移出鼠标后原图消失(多图)
2009/12/28 Javascript
js性能优化 如何更快速加载你的JavaScript页面
2012/03/17 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
利用jQuery和CSS将背景图片拉伸
2015/10/16 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
python字典基本操作实例分析
2015/07/11 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
Python字符串、整数、和浮点型数相互转换实例
2018/08/04 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
python cv2.resize函数high和width注意事项说明
2020/07/05 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
Sperry官网:帆船鞋创始品牌
2016/09/07 全球购物
美国美妆网站:B-Glowing
2016/10/12 全球购物
李宁官方网店:中国运动品牌
2017/11/02 全球购物
软件测试题目
2013/02/27 面试题
GWebs公司笔试题
2012/05/04 面试题
2014年教学管理工作总结
2014/12/02 职场文书
坎儿井导游词
2015/02/09 职场文书
公司安全管理制度范本
2015/08/05 职场文书
百日宴上的祝酒词
2015/08/10 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
js判断两个数组相等的5种方法
2022/05/06 Javascript