原生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 相关文章推荐
懒就要懒到底——鼠标自动点击(含时间判断)
Feb 20 Javascript
css配合jquery美化 select
Nov 29 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
Dec 22 Javascript
使用jQuery实现input数值增量和减量的方法
Jan 24 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
Apr 13 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
May 19 Javascript
全面介绍javascript实用技巧及单竖杠
Jul 18 Javascript
vue element 生成无线级左侧菜单的实现代码
Aug 21 Javascript
vue实现信息管理系统
May 30 Javascript
Vue路由的模块自动化与统一加载实现
Jun 05 Javascript
详解Vue之计算属性
Jun 20 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
Nov 07 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+ACCESS 文章管理程序代码
2010/06/21 PHP
php set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
Js callBack 返回前一页的js方法
2008/11/30 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
第十章之巨幕页头缩略图与警告框组件
2016/04/25 Javascript
js原型链与继承解析(初体验)
2016/05/09 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
JS实现选定指定HTML元素对象中指定文本内容功能示例
2017/02/13 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
vue仿淘宝订单状态的tab切换效果
2020/06/23 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
python多线程扫描端口示例
2014/01/16 Python
利用Python命令行传递实例化对象的方法
2016/11/02 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
python f-string式格式化听语音流程讲解
2019/06/18 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
原装进口全世界:天猫国际
2016/08/03 全球购物
模具专业求职信
2014/06/26 职场文书
举起手来观后感
2015/06/09 职场文书
创业计划书之餐饮
2019/09/02 职场文书
浅谈JS的原型和原型链
2021/06/04 Javascript