原生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 相关文章推荐
效率高的Javscript字符串替换函数的benchmark
Aug 02 Javascript
js操作textarea 常用方法总结
Dec 03 Javascript
javascript获取form里的表单元素的示例代码
Feb 14 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
Sep 11 Javascript
javascript DIV实现跟随鼠标移动
Mar 19 Javascript
BootStrap数据表格实例代码
Sep 13 Javascript
jQuery插件artDialog.js使用与关闭方法示例
Oct 09 jQuery
Vue中使用sass实现换肤功能
Sep 07 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
Sep 29 Javascript
Vue中通过Vue.extend动态创建实例的方法
Aug 13 Javascript
js实现淘宝首页的banner栏效果
Nov 26 Javascript
vue移动端使用canvas签名的实现
Jan 15 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
DOTA2【瓜皮时刻】Vol.91 RTZ山史最惨“矿难”
2021/03/05 DOTA
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
php实现水仙花数示例分享
2014/04/03 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
JavaScript OOP类与继承
2009/11/15 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
jQuery+css3实现文字跟随鼠标的上下抖动
2015/07/31 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
python33 urllib2使用方法细节讲解
2013/12/03 Python
Python httplib模块使用实例
2015/04/11 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
python实现石头剪刀布小游戏
2021/01/20 Python
python和node.js生成当前时间戳的示例
2020/09/29 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
Smashbox英国官网:美国知名彩妆品牌
2017/11/13 全球购物
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
如何获取某个日期是当月的最后一天
2013/12/05 面试题
三年级小学生评语
2014/04/22 职场文书
优秀班组事迹材料
2014/12/24 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL