JS-移动端判断上拉和下滑

一、手指触屏,利用touchstart和touchend计算前后滑动距离,判断是上拉还是下滑。

二、js中距离:pageY、clientY、offsetY的区别:

offsetY:相对于父节点的偏移距离。

clientY:相对于浏览器,滚轮距离不算在内。

pageY:相对于浏览器,滚轮滚动的距离算在内;本例中,用pageY,触屏时记录位置-startY,结束时记录-endY,两个相减以正负判断是上移还是下滑。

三、touchstart有touches属性,touchend有changedTouches属性,两个属性中分别有pageY、pageX信息。

//滑动处理
        var startX, startY;
        document.addEventListener(‘touchstart‘,function (ev) {
            startX = ev.touches[0].pageX;
            startY = ev.touches[0].pageY;
        }, false);

        document.addEventListener(‘touchend‘,function (ev) {
            var endX, endY;
            endX = ev.changedTouches[0].pageX;
            endY = ev.changedTouches[0].pageY;
            var direction = GetSlideDirection(startX, startY, endX, endY);
            switch(direction) {
                case 0:
                        alert("无操作");
                    break;
                case 1:
                    // 向上
                    alert("up");
                    break;
                case 2:
                    // 向下
                    alert("down");
                    break;

                default:
            }
        }, false);
function GetSlideDirection(startX, startY, endX, endY) {
            var dy = startY - endY;
            //var dx = endX - startX;
            var result = 0;
            if(dy>0) {//向上滑动
                result=1;
            }else if(dy<0){//向下滑动
                result=2;
            }
            else
            {
                result=0;
            }
            return result;
        }

原文地址:https://www.cnblogs.com/gopark/p/9338587.html

时间: 2024-10-16 01:39:41

JS-移动端判断上拉和下滑的相关文章

js遮罩层以及移动端的上拉框

今天发一个之前写的移动端的项目,主要是讲一下遮罩层的应用,以及顺带提一下移动开发的一些事情.首先按钮点击弹出遮罩层这个大家很熟悉了,这里还是给大家提供一份代码,跟通用的没太大区别,主要讲一下方法: $(function(){ var jiage=$(".jiage"),xingji=$(".xingji"),fj=$(".fj li"),qd=$(".qd");jiage.click(function(){tanchu();x

vux-scroller实现移动端上拉加载功能

本文将讲述vue-cli+vux-scroller实现移动端的上拉加载功能: 纠错声明:网上查阅资料看到很多人都将vux和vuex弄混,在这里我们先解释一下,vuex是vue框架自带的组件,是数据状态管理工具,vux是一款移动端的UI组件库: vux(官方文档:https://doc.vux.li/zh-CN/)是基于WeUi和vue(2.x)开发的移动端的UI组件库,主要服务于微信页面.基于webpack+vue-loader+vux可以快速开发移动端页面,配合vux-loader方便你在We

【前端】上拉加载更多dropload.min.js的使用

代码如下:入职代码修改接口及html为自己的即可(下面主要展示js部分) <!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

下拉刷新,上拉加载 的基础款(基本实现)

前言 现在网上 下拉刷新,上拉加载 插件一搜一大堆,如果你想用在生产环境,那你可以直接网上搜一个靠谱的,我所做的就是不依赖任何插件,一步一步把这个插件的过程写一下,各位同学可以在此基础上定制,没有写过插件的,可以了解下插件怎么写的,整个过程定位入门级,看不懂?那么百度插件直接用就好了,修炼一段时间在考虑怎么写插件吧.废话不多说,上效果图 原理 下拉刷新的原理就是,添加一个 div,这个 div 里面标识加载的过程,根据拉下的距离改变div的高度,从而显示 下拉加载 的文字,松手后根据下拉的距离,

Android项目:使用pulltorefresh开源项目扩展为下拉刷新上拉加载更多的处理方法,监听listview滚动方向

很多android应用的下拉刷新都是使用的pulltorefresh这个开源项目,但是它的扩展性在下拉刷新同时又上拉加载更多时会有一定的局限性.查了很多地方,发现这个开源项目并不能很好的同时支持下拉刷新和上拉加载更多.这个组件有个mode的属性,可以设置为both,即上下同时都可拉动.但是只设置这个属性的话,上拉与下拉产生的效果是完全一致的.所以要使用这个开源项目做到下拉刷新并同时可上拉加载更多,就需要在代码中进行一些处理. ==========================pulltoref

zepto.js + iscroll.js上拉加载 下拉加载的 移动端 新闻列表页面

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="viewport" content="width=device-width,initial-scale=1.0

原生js移动端touch事件实现上拉加载更多

大家都知道jQuery里没有touch事件,所以在移动端使用原生js实现上拉加载效果还是很不错的,闲话不多说,代码如下: 1 //获取要操作的元素 2 var objSection = document.getElementsByTagName("div")[0]; 3 //给元素绑定监听事件 个人习惯把监听事件写在一块 4 objSection.addEventListener("touchstart", touchStart, false); 5 objSect

实现移动端上拉加载效果

毕设终于结束了,做了一个webApp,从中学习到了很多,页面有用到上拉加载的效果.今天就整理了一下. 上拉加载的实现思路其实很简单: 1.移动端触发touchmove事件(上拉) 2.判断最后一个元素是否已出现在底部 3.若出现,则js添加元素到页面末尾 思路图: 接下来开始编写style样式: html,body{ margin: 0px; width: 100%; height: 100%; } li{ list-style: none; } #personkit_article_ul{ w

better-scroll 上拉加载,下拉刷新(解决移动端长页面卡顿)

一.Better Scroll 滚动原理 1.下图能直观的表示better-scroll的滚动原理 2.html设置 <div class="wrapper"> <ul class="content"> <li>...</li> <li>...</li> ... </ul> <!-- 这里可以放一些其它的 DOM,但不会影响滚动 --> </div> 3.js