拖拽小案例

<!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>
    #block {
        width: 50px;
        height: 50px;
        background-color: red;
        position: absolute;
        left: 0;
        top: 0;
    }
    </style>
</head>

<body>
    <div id="block"></div>
    <script>
    // 获取节点
    var block = document.getElementById("block");
    drag(block);

    /**
    * 功能:物体拖拽方法的封装
    * 参数:js物体对象 obj
    * author: wangyuhong
    * time: 2017/12/6 
    */
    function drag(obj){
        var oW, oH;
        // 绑定touchstart事件
        block.addEventListener("touchstart", function(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;
            var clientWidth = document.documentElement.clientWidth;
            var clientHeight = document.documentElement.clientHeight
            // 左右边界判断
            if (oLeft < 0) {
                oLeft = 0;
            } else if (oLeft > clientWidth - block.offsetWidth) {
                oLeft = clientWidth - block.offsetWidth;
            }

            //上下边界判断
            if (oTop < 0) {
                oTop = 0;
            }else if (oTop > clientHeight - block.offsetHeight) {
                oTop = 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>

转载于:https://my.oschina.net/shuaihong/blog/1585920

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值