做手机开发时候,简单想用一些动作,如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事件的更多相关文章

  1. 手机触摸touch事件

    1.Touch事件简介 pc上的web页面鼠 标会产生onmousedown.onmouseup.onmouseout.onmouseover.onmousemove的事件,但是在移动终端如 ipho ...

  2. 《移动端浏览器Touch事件判断手指滑动方向方法》

    $("body").on("touchstart", function(e) {     e.preventDefault();     startX = e. ...

  3. 手机的touch事件(基于jquery)

    javascript代码: $.swipe=function(opt){   var o = $.extend({     mainSelector:"",     swipeLe ...

  4. 对于移动端浏览器touch事件的研究总结(4)判断手指滑动方向

    最近有一些微信的项目,虽然页面很简单,但配合手势后的效果却是很不错的.最基本的效果就是手指向上滑,页面配合css3出现一个展开效果,手指向下滑将展开的内容按原路径收起.其实就是一个简单的判断手指滑动方 ...

  5. 移动端浏览器touch事件的研究总结

    $("body").on("touchstart", function(e) {     e.preventDefault();     startX = e. ...

  6. UC浏览器中touch事件的异常记录

    以前也在UC上面栽过几个坑,不过都是页面显示方面的.上个周的时候,商品详情页重做,要添加个上拉显示详情的效果. 有两个条件需要判断: 1.是否到达底部: 2.到达底部之后拖动的y轴距离. 效果写完后, ...

  7. javascript移动设备Web开发中对touch事件的封装实例

    在触屏设备上,一些比较基础的手势都需要通过对 touch 事件进行二次封装才能实现.zepto 是移动端上使用率比较高的一个类库,但是其 touch 模块模拟出来的一些事件存在一些兼容性问题,如 ta ...

  8. 微信浏览器返回刷新,监听微信浏览器返回事件,网页防复制,移动端禁止图片长按和vivo手机点击img标签放大图片

    以下代码都经过iphone7,华为MT7 ,谷歌浏览器,微信开发者工具,PC端微信验证.如有bug,还请在评论区留言. demo链接:https://pan.baidu.com/s/1c35mbjM ...

  9. 手机touch事件及参数【转】(自己懒得写了,找了一篇摘过来)

    [html5构建触屏网站]之touch事件 前言 一个触屏网站到底和传统的pc端网站有什么区别呢,交互方式的改变首当其冲.例如我们常用的click事件,在触屏设备下是如此无力. 手机上的大部分交互都是 ...

随机推荐

  1. ACM_基础知识(二)

    1. strstr: 函数原型:extern char *strstr(char *str1, const char *str2); 功能:strstr(str1,str2) 函数用于判断字符串str ...

  2. 2、手把手教你Extjs5(二)项目中文件的加载过程

    上一节中用sencha工具自动创建了一个项目,并且可以在浏览器中查看.现在我们来看看js类加载过程.如下图所示: 1、首先:浏览器中输入 localhost:1841 ,调用 index.html; ...

  3. Apache Mina(二)

    在mina的源码,整个框架最核心的几个包是 : org.apache.mina.core.service :IoService.IoProcessor.IoHandler.IoAcceptor.IoC ...

  4. STM32的优先级NVIC_PriorityGroupConfig

    关于STM32的中断优先级 1.STM32中每一个中断都有一个专门的寄存器,(Interrupt Priority Register),来描述该中断的占先式优先级和副优先级,在这个寄存器中STM32使 ...

  5. RTMP开发记录 测试服务器搭建篇

    nginx-rtmp-module 安装 最近在做直播功能,为了方便调试,在本地搭建一个rtmp server吧~ 我的配置环境是Ubuntu12.04 64 安装编译环境所需库 sudo apt-g ...

  6. python实现断点续传下载文件

    最近的任务里有一个功能是要我从日志服务器实时跟新日志到本地,日志在不断新增内容就需要我隔一段时间从上次下载的位置继续下载,并写入本地文件上次写完的位置后面. headers = {'Range': ' ...

  7. 部分网站允许空白referer的防盗链图片的js破解代码

    Reference: http://www.114390.com/article/27125.htm Javascript源码: 复制代码代码如下: function showImg( url ) { ...

  8. 【java基础】内部类,局部内部类,匿名内部类、静态内部类、接口中的内部类

    内部类: 1.定义在一个类中的内部类,内部类的实例化伴随着外围类所定义的方法来构造,内部类对象有外围类的隐式引用,所以内部类可以直接访问外围类的外围类的域,包括私有的,这是内部类的访问特权,所以比常规 ...

  9. Swing 布局时 组件大小问题

    在JFrame中放置了几个JPanel ,想调整JPanel大小,一直无效. 问题在于: 因为JPanel A的四周没有添加任何组件,所以JPanel B会把JPanel A填满.这种情况想固定JPa ...

  10. linux Cron 执行Django 任务计划

    用shell 脚本调用python 脚本如下 #!/bin/bash export FLAVOR=liveexport PYTHONPATH=$PYTHONPATH:/home/alex/Django ...