原生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中的constructor和prototype
Apr 07 Javascript
js类定义函数时用prototype与不用的区别示例介绍
Jun 10 Javascript
JavaScript驾驭网页-获取网页元素
Mar 24 Javascript
原生JS实现的放大镜效果实例代码
Oct 15 Javascript
js实现方块上下左右移动效果
Aug 17 Javascript
react-native-fs实现文件下载、文本存储的示例代码
Sep 22 Javascript
Echarts动态加载多条折线图的实现代码
May 24 Javascript
vue  elementUI 表单嵌套验证的实例代码
Nov 06 Javascript
Angular如何由模板生成DOM树的方法
Dec 23 Javascript
js实现图片实时时钟
Jan 15 Javascript
JS删除对象中某一属性案例详解
Sep 08 Javascript
JavaScript获取时区实现过程解析
Sep 24 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实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
thinkPHP查询方式小结
2016/01/09 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
快速解决PHP调用Word组件DCOM权限的问题
2017/12/27 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
PHP使用phpunit进行单元测试示例
2019/09/23 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
用JQuery调用Session的实现代码
2010/10/29 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
python3个性签名设计实现代码
2018/06/19 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
python import 上级目录的导入
2020/11/03 Python
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
教学实习自我评价
2014/01/28 职场文书
2014年端午节活动方案
2014/03/11 职场文书
搞笑征婚广告词
2014/03/17 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
文明班级申报材料
2014/12/24 职场文书
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js
python中validators库的使用方法详解
2022/09/23 Python
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS