在pc端,我们通常使用$(window).scroll()事件来监听元素的位置,来做一些入场动效,如:

$(window).scroll(function(){
var panel3Move = document.getElementById('panel3').offsetTop <= ($(window).scrollTop() + 656);
panel3Move && move('.panel1-man .man2').set('opacity', '1').duration('2.8s').end();
}

那么在移动端开发中,也经常有手指滑动时做相关处理的需求,如 下滑时导航条吸顶、上滑时又恢复原态,下拉刷新、上拉加载更多等等..  可是window对象的scroll事件在移动端有个致命的缺点:“必须手指松开才能触发”!,用户体验非常差劲,幸运的是移动端提供了touch系列事件,问题也就迎刃而解了..

思路:开启touchStart、touchMove或者touchEnd的事件监听,当手指按下的时候记录初始位置,再根据滑动后的位置做减法,即可以判断上滑/下滑,再处理相应的业务逻辑

代码片段:

     options: {
startX: null,
startY: null
}, touchStart: function(event){
var self = touchMain;
try{
var touch = event.touches[0], //获取第一个触点
x = Number(touch.pageX), //页面触点X坐标
y = Number(touch.pageY); //页面触点Y坐标
//记录触点初始位置
self.options.startX = x;
self.options.startY = y;
}catch(e){
console.log(e.message)
}
}, /**
* 滑动时判断下滑、上滑
* @param {[type]} event
* @param {[type]} upcallback [上滑回调函数]
* @param {[type]} downcallback [下滑回调函数]
*/
touchMove: function(event,upcallback,downcallback){
var self = touchMain;
try{
var touch = event.touches[0], //获取第一个触点
x = Number(touch.pageX), //页面触点X坐标
y = Number(touch.pageY); //页面触点Y坐标 //判断滑动方向
if (y - self.options.startY > 0) {
//console.log('下滑了!');
downcallback && downcallback();
}else{
//alert('上滑了!');
upcallback && upcallback();
}
}catch(e){
console.log('滑动时出错:',e.message)
}
},

使用:

      //下滑显示、上滑隐藏
require(['touch'],function(){
var $getTicktImgSection = $('#getTicktImgSection');
document.addEventListener('touchstart',window.touchMain.touchStart,false);
document.addEventListener('touchmove',function(event){
window.touchMain.touchMove(event,function(){//上滑
$getTicktImgSection.css({'right':'-800px'})
},function(){//下滑
$getTicktImgSection.css({'right':'1em'})
})
},false);
})

完整代码:https://github.com/helijun/component/tree/master/touch

移动端touchstart、touchmove事件的基本使用的更多相关文章

  1. 移动端touchstart,touchmove,touchend

    近段时间使用html5开发一个公司内部应用,而触摸事件必然是移动应用中所必须的,刚开始以为移动设备上或许也会支持鼠标事件,原来是不支持的,好在webkit内核的移动浏览器支持touch事件,并且打包成 ...

  2. 移动端的touchstart,touchmove,touchend事件中的获取当前touch位置

    前提:touchstart,touchmove,touchend这三个事件可以通过原生和jq绑定. 原生:document.querySelector("#aa").addEven ...

  3. 2014-08-28——移动端,触摸事件 touchstart、touchmove、touchend、touchcancel

    1.Touch事件简介在移动终端上的web页面触屏时会产生ontouchstart.ontouchmove.ontouchend.ontouchcancel 事件,分别对应了触屏开始.拖拽及完成触屏事 ...

  4. touchstart,touchmove,touchend触摸事件的小小实践心得

    近段时间使用html5开发一个公司内部应用,而触摸事件必然是移动应用中所必须的,刚开始以为移动设备上或许也会支持鼠标事件,原来是不支持的,好在webkit内核的移动浏览器支持touch事件,并且打包成 ...

  5. 关于如何获取移动端 touchmove 事件中真正触摸点下方的元素

    移动端的touchstart, touchmove, touchend三个事件,点击元素并拖动时,获取到了touchmove事件, 但是event.touches[0].target所指向的元素却是t ...

  6. 浅谈移动端之touch事件--手指的滑动事件

    今天台风‘海马’袭击深圳,全市停工.现分享一篇关于touch的文章,望指教! 原理: 当开始一个touchstart事件的时候,获取此刻手指的横坐标startX和纵坐标startY: 当触发touch ...

  7. 移动端-js触摸事件

    开发者工具 在移动开发中,一种较为容易的做法是,先在桌面上开始原型设计,然后再在打算要支持的设备上处理移动特有的部分.多点触摸正是难以在PC上进行测试的那些功能之一,因为大部分的PC都没有触摸输入. ...

  8. 移动端 js touch事件

    随着智能手机和平板电脑的普及, 越来越多的人用移动设备浏览网页,我们平时在pc浏览器上用的鼠标事件,比如:click, mouseover等, 已经无法满足移动设备触摸屏的特点,触摸时代的到来,离不开 ...

  9. 关于移动端的Click事件

    在移动端执行Click事件,通常情况出现有300毫秒的延迟,为防止这种不必要的延迟效果,我们可以换种方式来实现,同样达到快速执行Click事件的效果. 先了解一下移动端Click的执行顺序: touc ...

  10. 关于移动端的UI事件分类

    1. click事件 单击事件,类似于PC端的click,但在移动端中,连续click的触发有200ms ~ 300ms的延迟 2. touch类事件 触摸事件,有touchstart touchmo ...

随机推荐

  1. logging 模块

    import logging logging.basicConfig(filename='log.log', format='%(asctime)s - %(name)s - %(levelname) ...

  2. Python删除指定时间的文件

    import os import time import sys from xml.dom import minidom, Node from xml.dom.minidom import parse ...

  3. Android Studio各种快捷功能及好用的插件

    转载:http://www.jianshu.com/p/c439605a4364 概述 现如今开发越来越追求效率和节奏,节省出时间做更多的事情,除了开发技术上的封装等,开发工具的使用技巧也是很重要的, ...

  4. NPOI操作Excel时使用列头来读取数据的方法

    首先定义扩展方法: public static ICell GetCell(this IRow row, string clounmName) { IRow firstRow = row.Sheet. ...

  5. 测试dns

    测试dns nslookup test.cn 10.109.68.114 ipconfig /flushdns dig test.cn @10.109.68.114 sudo /etc/init.d/ ...

  6. 网页特效:用CSS3制作3D图片立方体旋转特效

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. reset.css css重置公共样式

    @charset "utf-8";/*Css Document*/ /*! * @名称:reset.css * @功能:1.重设浏览器默认样式 * 2.设置通用原子类 *//* 防 ...

  8. ssh保持链接

    修改/etc/ssh/sshd_config配置文件 ClientAliveInterval 300(默认为0), 参数的是意思是每5分钟,服务器向客户端发一个消息,用于保持连接,使用service ...

  9. Unable to load configuration. - Class: java.net.AbstractPlainSocketImpl

    [Bug笔记]Unable to load configuration. - Class: java.net.AbstractPlainSocketImpl 标签: bugjartomcat服务器互联 ...

  10. Ruby常用比较操作符

    操作符 含义 == 测试值是否相等 ==== 用来比较case语句的目标和每个when从句的项 <=>  通用比较操作符. 根据接受者小于, 等于, 大于其参数, 返回-1, 0. 1 & ...