• 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>

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

  • 相关阅读:
    Something broke! (Error 500)——reviewboard
    linux内核--自旋锁的理解
    I.MX6 mkuserimg.sh hacking
    I.MX6 DNS 查看、修改方法
    I.MX6 android mkuserimg.sh
    I.MX6 AW-NB177NF wifi HAL 调试修改
    I.MX6 wpa_supplicant_8 编译问题
    I.MX6 MAC Address hacking
    I.MX6 MAC地址修改
    I.MX6 U-boot imxotp MAC address 写入
  • 原文地址:https://www.cnblogs.com/CaktyRiven/p/5239824.html
Copyright © 2020-2023  润新知