简易封装手机浏览器touch事件
做手机开发时候,简单想用一些动作,如touchLeft,touchRight等,
使用其他库文件就要加载很多不必要的东西,流量的浪费
今天简单写了封装touch的库,简单的监听一些逻辑
onToucheLeft
onTouchRight
onTouchUp
onTouchDown
onTouch
onLongTouch
等等
js部分
//简单的touch事件
//param:elem touch的对象
function SHBTouch(elem){
this.elem = elem ;
this.moveLen = 30 ;//当移动距离大于30,触发onTouchLeft,onTouchRight,onTouchUp,onTouchDown 否则触发onTouch
this.longTouchTime = 750 ;//当按住元素时间大于750ms,触发onLongTouch
this.touchObj = {
startX:0,//起始X
startY:0,//起始Y
curX:0,//结束X
curY:0,//结束Y
startTime:0//其实时间
};
//对元素增加touch事件
this.elem.addEventListener('touchstart',funTouchStart) ;
this.elem.addEventListener('touchmove',funTouchMove) ;
this.elem.addEventListener('touchend',funTouchEnd) ; var self = this ; function funTouchStart(e){
e.preventDefault();
self.touchObj.startX = e.touches[0].screenX ;
self.touchObj.startY = e.touches[0].screenY ;
self.touchObj.startTime = (new Date()).getTime();
} function funTouchMove(e){
e.preventDefault();
self.touchObj.curX = e.touches[0].screenX ;
self.touchObj.curY = e.touches[0].screenY ;
}
//根据移动距离,和时间判断触发事件
function funTouchEnd(e){
e.preventDefault();
var curTime = (new Date()).getTime();
if(Math.abs(self.touchObj.curX - self.touchObj.startX) < self.moveLen){
if(curTime - self.touchObj.startTime > self.longTouchTime){
self.onLongTouch() ;
}else{
self.onTouch() ;
}
}else if(self.touchObj.curX > self.touchObj.startX){
self.onTouchRight() ;
}else if(self.touchObj.curX < self.touchObj.startX){
self.onTouchLeft() ;
}
if(Math.abs(self.touchObj.curY - self.touchObj.startY) < self.moveLen){
if(curTime - self.touchObj.startTime > self.longTouchTime){
self.onLongTouch() ;
}else{
self.onTouch() ;
}
}else if(self.touchObj.curY > self.touchObj.startY){
self.onTouchDown() ;
}else if(self.touchObj.curY < self.touchObj.startY){
self.onTouchUp() ;
}
}
} SHBTouch.prototype.onTouchLeft = function(){}
SHBTouch.prototype.onTouchRight = function(){}
SHBTouch.prototype.onTouchUp = function(){}
SHBTouch.prototype.onTouchDown = function(){}
SHBTouch.prototype.onTouch = function(){}
SHBTouch.prototype.onLongTouch = function(){}
html部分
<!doctype html>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no" />
</head>
<body>
<div id="myDemo" style="position:absolute;left:0px;top:0px;height:300px;font-size:100px;line-height:300px;-webkit-transition:300ms;">1323123473131</div>
<script src="lib_shb_touch.js"></script>
<script>
var a = document.getElementById('myDemo') ;
var demo = new SHBTouch(a) ;
var left = 0 ;
demo.onTouchLeft = function(){
left -= 100 ;
a.style.left = left+"px"
}
demo.onTouchRight = function(){
left += 100 ;
a.style.left = left+"px"
}
</script>
</html>
简易封装手机浏览器touch事件的更多相关文章
- 手机触摸touch事件
1.Touch事件简介 pc上的web页面鼠 标会产生onmousedown.onmouseup.onmouseout.onmouseover.onmousemove的事件,但是在移动终端如 ipho ...
- 《移动端浏览器Touch事件判断手指滑动方向方法》
$("body").on("touchstart", function(e) { e.preventDefault(); startX = e. ...
- 手机的touch事件(基于jquery)
javascript代码: $.swipe=function(opt){ var o = $.extend({ mainSelector:"", swipeLe ...
- 对于移动端浏览器touch事件的研究总结(4)判断手指滑动方向
最近有一些微信的项目,虽然页面很简单,但配合手势后的效果却是很不错的.最基本的效果就是手指向上滑,页面配合css3出现一个展开效果,手指向下滑将展开的内容按原路径收起.其实就是一个简单的判断手指滑动方 ...
- 移动端浏览器touch事件的研究总结
$("body").on("touchstart", function(e) { e.preventDefault(); startX = e. ...
- UC浏览器中touch事件的异常记录
以前也在UC上面栽过几个坑,不过都是页面显示方面的.上个周的时候,商品详情页重做,要添加个上拉显示详情的效果. 有两个条件需要判断: 1.是否到达底部: 2.到达底部之后拖动的y轴距离. 效果写完后, ...
- javascript移动设备Web开发中对touch事件的封装实例
在触屏设备上,一些比较基础的手势都需要通过对 touch 事件进行二次封装才能实现.zepto 是移动端上使用率比较高的一个类库,但是其 touch 模块模拟出来的一些事件存在一些兼容性问题,如 ta ...
- 微信浏览器返回刷新,监听微信浏览器返回事件,网页防复制,移动端禁止图片长按和vivo手机点击img标签放大图片
以下代码都经过iphone7,华为MT7 ,谷歌浏览器,微信开发者工具,PC端微信验证.如有bug,还请在评论区留言. demo链接:https://pan.baidu.com/s/1c35mbjM ...
- 手机touch事件及参数【转】(自己懒得写了,找了一篇摘过来)
[html5构建触屏网站]之touch事件 前言 一个触屏网站到底和传统的pc端网站有什么区别呢,交互方式的改变首当其冲.例如我们常用的click事件,在触屏设备下是如此无力. 手机上的大部分交互都是 ...
随机推荐
- mvc中怎么读取htm的文件
@Html.Raw(File.ReadAllText(Server.MapPath("/Include/head01.htm")))
- PHP访问接口获取数据
如:http://localhost/operate.php?act=get_user_list&type=json 在这里operate.php相当于一个接口,其中get_user_list ...
- 关于IP选项
源:关于IP选项 校验和算法
- STM32驱动TEA5767收音机模块
Tea5767是飞利浦公司出的一款集成化的收音机芯片,大四的时候机缘巧合遇到了这个芯片,用了一下,写点资料 主要特性 TEA5767HN是一款低功耗立体声收音IC,广泛应用于手机MP3 .MP 4 播 ...
- Qt下libusb-win32的使用(转)
源:Qt下libusb-win32的使用(一)打印设备描述符 主要是在前一篇的基础上,学习libusb-win32的API使用.程序很简单,就是打印指定USB设备的设备描述符(当然其他描述符也是可以的 ...
- 【转】20条Linux命令面试问答
问:1 如何查看当前的Linux服务器的运行级别? 答: ‘who -r’ 和 ‘runlevel’ 命令可以用来查看当前的Linux服务器的运行级别. 问:2 如何查看Linux的默认网关? 答: ...
- 如何获得keyhash
keyhash是由keystore产生的 三个命令解决问题 keytool -exportcert -alias androiddebugkey -keystore debug.keystore &g ...
- [Angular Tutorial] 12 -Event Handlers
在这一步中,您将会在电话细节页面添加一个可点击的电话图片转换器. ·电话细节页面展示了当前电话的一张大图片和几张相对较小的略图.如果我们能仅仅通过点击略图就能把大图片换成略图就好了.让我们看看用Ang ...
- 1)Linux学习笔记:crontab命令
crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程 配置文件 ``` SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin: ...
- Iphone安装铃声
PP助手 应用列表中打开铃声多多文档. 5点击铃声下载,找到下载的铃声,按下图所示步骤导出至电脑. 6在PP助手界面内,找到"视频音乐"标签,然后进入视频音乐分类下的铃声分类,点击 ...