移动端上下滑动事件之--坑爹的touch.js
下面的方法,不知道是操作方法不对还是啥. 在 zepto.js 里面加那一段代码不起作用
百度的 touch.js 是可以用的,但是使用方式 和 zepto有点不一样.
解决方案:参照这个链接地址
http://www.cnblogs.com/zhongxia/p/5410478.html
==========================================================
转:http://blog.csdn.net/minidrupal/article/details/39611605?utm_source=tuicool&utm_medium=referral
移动端页面的盛行,微信的便利的页面推广等等,让越来越多的css3效果和html5在手机端大放异彩。
于是乎,各式各样的简约酷炫的html5页面层出不穷,最多的就是视差滚动+css3动画。
接下来就说说自己在搞这些页面里面碰到的一个小问题-------zepto.js里面,坑爹的touch.js的上下滑动(swipe)事件失效。
在举例之前,先科普一下如何在pc端,查看html5页面在各种分辨率的手机的展示情况。
最常见的就是利用谷歌的手机模拟器。
步骤1:打开谷歌浏览器,按F12.
步骤2:然后按截图里面的步骤,选择各种分辨率,在刷新一下页面,就可以看到效果。
注:各种手机的选择
开始描述问题之前,先提供几个网址,
让你们试试能不能看到效果。
- (function($) {
- var options, Events, Touch;
- options = {
- x: 20,
- y: 20
- };
- Events = ['swipe', 'swipeLeft', 'swipeRight', 'swipeUp', 'swipeDown', 'tap', 'longTap', 'drag'];
- Events.forEach(function(eventName) {
- $.fn[eventName] = function() {
- var touch = new Touch($(this), eventName);
- touch.start();
- if (arguments[1]) {
- options = arguments[1]
- }
- return this.on(eventName, arguments[0])
- }
- });
- Touch = function() {
- var status, ts, tm, te;
- this.target = arguments[0];
- this.e = arguments[1]
- };
- Touch.prototype.framework = function(e) {
- e.preventDefault();
- var events;
- if (e.changedTouches) events = e.changedTouches[0];
- else events = e.originalEvent.touches[0];
- return events
- };
- Touch.prototype.start = function() {
- var self = this;
- self.target.on("touchstart",
- function(event) {
- event.preventDefault();
- var temp = self.framework(event);
- var d = new Date();
- self.ts = {
- x: temp.pageX,
- y: temp.pageY,
- d: d.getTime()
- }
- });
- self.target.on("touchmove",
- function(event) {
- event.preventDefault();
- var temp = self.framework(event);
- var d = new Date();
- self.tm = {
- x: temp.pageX,
- y: temp.pageY
- };
- if (self.e == "drag") {
- self.target.trigger(self.e, self.tm);
- return
- }
- });
- self.target.on("touchend",
- function(event) {
- event.preventDefault();
- var d = new Date();
- if (!self.tm) {
- self.tm = self.ts
- }
- self.te = {
- x: self.tm.x - self.ts.x,
- y: self.tm.y - self.ts.y,
- d: (d - self.ts.d)
- };
- self.tm = undefined;
- self.factory()
- })
- };
- Touch.prototype.factory = function() {
- var x = Math.abs(this.te.x);
- var y = Math.abs(this.te.y);
- var t = this.te.d;
- var s = this.status;
- if (x < 5 && y < 5) {
- if (t < 300) {
- s = "tap"
- } else {
- s = "longTap"
- }
- } else if (x < options.x && y > options.y) {
- if (t < 250) {
- if (this.te.y > 0) {
- s = "swipeDown"
- } else {
- s = "swipeUp"
- }
- } else {
- s = "swipe"
- }
- } else if (y < options.y && x > options.x) {
- if (t < 250) {
- if (this.te.x > 0) {
- s = "swipeLeft"
- } else {
- s = "swipeRight"
- }
- } else {
- s = "swipe"
- }
- }
- if (s == this.e) {
- this.target.trigger(this.e);
- return
- }
- }
- })(window.jQuery || window.Zepto);
Author: Alone
Antroduction: 高级前端开发工程师
Sign: 人生没有失败,只有没到的成功。
移动端上下滑动事件之--坑爹的touch.js的更多相关文章
- 移动端上下滑动事件之--坑爹的touch.js
原文 http://blog.csdn.net/minidrupal/article/details/39611605 移动端页面的盛行,微信的便利的页面推广等等,让越来越多的css3效果和htm ...
- 移动端 uni-app 滑动事件 精确判断手指滑动方向
移动端根据手指滑动操作判断滑动方向 设计思路: 1.根据移动端touchstart和touchend方法获取手指触摸屏幕的开始坐标和结束坐标 2.根据两个坐标计算与水平方向的夹角 3.根据夹角判断当前 ...
- Html5 移动端 触摸滑动事件
以下代码经过测试 没有问题 且可以循环滑动 <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"& ...
- 【css】用css巧妙实现移动端横向滑动展示功能
前言:记得以前处理移动端横向滑动展示都是去用js去解决的,要用js进行蛮多处理,要算li的宽度,然后还要用js设置ul盒子的宽度,又要设置最大滑动距离,最小滑动距离等等.......但是现在发现用cs ...
- 用css巧妙实现移动端横向滑动展示功能
前言:记得以前处理移动端横向滑动展示都是去用js去解决的,要用js进行蛮多处理,要算li的宽度,然后还要用js设置ul盒子的宽度,又要设置最大滑动距离,最小滑动距离等等.......但是现在发现用cs ...
- 原生js移动端滑动事件
移动端触屏滑动的效果其实就是图片轮播,在PC的页面上很好实现,绑定click和mouseover等事件来完成.但是在移动设备上,要实现这种轮播的效果,就需要用到核心的touch事件.处理touch事件 ...
- 移动端js手指滑动事件初体验
今天在公司遇到做一个移动端手指滑动的效果,刚開始用了swiper.js插件发现效果不好(文字存在模糊效果).后来查了一些资料,自己手写了一个使用原生js写的滑动效果. 以下直接上代码: <!do ...
- 移动端H5开发 (滑动事件)
最近一直在做手机App H5的开发,在开发过程中,经常会遇到很多滑动事件,写个demo,分享自己的一些写法.(如写的不好,轻喷!) 直接贴代码 html css代码 <!DOCTYPE html ...
- 移动端touch滑动事件监听
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
随机推荐
- [BZOJ 5072]小A的树
Description 题库链接 给你 \(n\) 个节点的一棵树,点分黑白. \(q\) 组询问,每次询问类似于"是否存在树中 \(x\) 个点的连通块恰有 \(y\) 个黑点" ...
- tcpdump一个命令的剖析
简单介绍:用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据 ...
- mysql中Access denied for user 'root'@'localhost' (using password:YES)错误
此错误主要是由于你的系统曾经装过MYSQL,在重装就会要求输入原来设定的密码 由于输入错误导致 解决办法见 上一篇博客 MYSQL安装时解决要输入current root passwo ...
- HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
HTML5 的本地存储 API 中的 localStorage 与 sessionStorage 在使用方法上是相同的,区别在于 sessionStorage 在关闭页面后即被清空,而 localSt ...
- spring boot 学习入门篇【spring boot项目的搭建以及如何加载jsp界面】
[ 前言] Spring Boot 简介:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置, ...
- 对MVC模式与MVVM模式的认识
MVC模式与MVVM模式目的一样,主要是分离模型(model)和视图(view),具体介绍如下. 名词介绍 MVC模式:指的是模型(Model)-- 视图(View)-- 控制器(Controller ...
- 利用:before和:after伪类制作类似微信对话框
今天学到了怎么做一个小三角形,进而结合其他属性把类似微信对话框的图形做出来了. 先做出如下形状: .arrow { width: 30px; height:30px; border-width:20p ...
- Flutter 控件之 AppBar 和 SliverAppBar
AppBar 和 SliverAppBar 是纸墨设计中的 App Bar,也就是 Android 中的 Toolbar,关于 Toolbar 的设计指南请参考纸墨设计中 Toolbar 的内容. A ...
- cookie implements session
cookie实现会话 服务器调用response.addCookie()设置set-cookie响应头后,浏览器收到这个响应头与数值后,会将它以文件的形式存储于本地PC上.当浏览器再次访问同一Web服 ...
- this and super
this 和 super 的区别:this, 先从本类找属性和方法,本类找不到再从父类找.super, 从父类找. this 和 super 都可以调用构造方法,所以this() 和 super() ...