为了账号安全,请及时绑定邮箱和手机立即绑定

为啥document触发房子touchstart外,下次点击触发start,显示startTouchX 次数加1

为啥document触发房子touchstart外,下次点击触发start,显示startTouchX 次数加1

我是蜗牛 2016-10-26 14:45:13
<!DOCTYPE html><html><head>    <meta charset="UTF-8">    <title>Document</title>    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">    <style>        *{            margin:0;            padding: 0;        }        .wrapper{            overflow:hidden;        }        .swipArea{            height: 100px;            background-color: green;            text-align: center;            line-height: 100px;            position: absolute;            left: 0;            right: 0;        }    </style></head><body>    <div>        <div id="swipArea">swipArea</div>    </div>    <script>        function Swip(el){            this.el = el;            this.init();        }        Swip.prototype.init = function(){            var startTouchX = 0,                startTouchY = 0,                endTouchX = 0,                endTouchY = 0;            var deltaX = 0, deltaY = 0;              var direction = "left";            var d = "";            var that = this;            this.el.addEventListener("touchstart",function(evt){                evt.preventDefault();                var touches = evt.touches[0];                startTouchX = touches.pageX;                startTouchY = touches.pageY;                // console.log("startTouchX : " + startTouchX)            },false);            document.addEventListener("touchmove",function(evt){                evt.preventDefault();                var touches = evt.touches[0];                endTouchX = touches.pageX;                endTouchY = touches.pageY;                deltaY = endTouchY - startTouchY;                if(deltaY > 0) that.el.style.top = deltaY + "px";                 // console.log("endTouchX : " + endTouchX + ",endTouchY : " + endTouchY)            },false);            document.addEventListener("touchend",function(evt){                evt.preventDefault();                document.ontouchmove = null;                document.ontouchstart = null;                deltaX = endTouchX - startTouchX;                deltaY = endTouchY - startTouchY;                d =  Math.abs(deltaX) > Math.abs(deltaY) ? "h" : "v";                if(d == "h") direction = deltaX > 0 ? "right" : "left";                else if(d == "v")  direction = deltaY > 0 ? "down" : "top";                that.el.style.top = "0";                // console.log("deltaX : " + deltaX + ",deltaY : " + deltaY)  ;            },false);        }        var swipArea = document.querySelector("#swipArea");        new Swip(swipArea);    </script></body></html>
查看完整描述

1 回答

?
李晓健

TA贡献1036条经验 获得超461个赞

这个应该不是加1,是你点的位置不一样吧。在屏幕上点,你是没法保证两次点的位置完全一样的,精确到一个像素

查看完整回答
反对 回复 2016-10-26
  • 1 回答
  • 0 关注
  • 1374 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信