zoukankan      html  css  js  c++  java
  • touchstart、touchmove、touchend 实现移动端上的触屏拖拽

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
            <style>
                body {
                    height: 2000px;
                }
                #block {
                    width:200px;
                    height:200px;
                    background-color: red;
                    position: absolute;
                    left: 0;
                    top: 0;
                }
            </style>
        </head>
        <body>
            <div>
                touchstart,touchmove,
                touchend,touchcancel
            </div>
            <div id="block"></div>
    <script>
            // 获取节点
            var block = document.getElementById("block");
            var oW,oH;
            // 绑定touchstart事件
            block.addEventListener("touchstart", function(e) {
                console.log(e);
                var touches = e.touches[0];
                oW = touches.clientX - block.offsetLeft;
                oH = touches.clientY - block.offsetTop;
                //阻止页面的滑动默认事件
                document.addEventListener("touchmove",defaultEvent,false);
            },false)
    
            block.addEventListener("touchmove", function(e) {
                var touches = e.touches[0];
                var oLeft = touches.clientX - oW;
                var oTop = touches.clientY - oH;
                // 边界判断
                if(oLeft < 0) {
                    oLeft = 0;
                }else if(oLeft > document.documentElement.clientWidth - block.offsetWidth) {
                    oLeft = (document.documentElement.clientWidth - block.offsetWidth);
                }
                if(oTop<0){
                    oTop=0;
                }else if(oTop > document.documentElement.clientHeight - block.offsetHeight){
                   oTop=(document.documentElement.clientHeight - block.offsetHeight);
                }
                block.style.left = oLeft + "px";
                block.style.top = oTop + "px";
            },false);
            
            block.addEventListener("touchend",function() {
                document.removeEventListener("touchmove",defaultEvent,false);
            },false);
            function defaultEvent(e) {
                e.preventDefault();
            }
    </script>
        </body>
    </html>

    注:本例在谷歌浏览器的模拟器上测试,未进行真机测试!

  • 相关阅读:
    Scilab 的画图函数(2)
    Webapp的display-name问题
    记录:在老XPS1330上安装CentOS7
    包含Blob字段的表无法Export/Import
    记一段脚本的诞生
    一个短小的JS函数,用来得到仅仅包含不重复元素的数组
    然并卵
    Linux下的定时任务Crontab
    两段用来启动/重启Linux下Tomcat的Perl脚本
    JavaScript中给二维数组动态添加元素的质朴方法
  • 原文地址:https://www.cnblogs.com/CaktyRiven/p/5239824.html
Copyright © 2011-2022 走看看