移动端封装拖拽

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>移动端拖拽</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
        .container {
            margin: auto;
            height: calc(100vh - 2px);
            overflow: hidden;
            border: thin solid #000;
            position: relative;
        }
        .target {
            width: 200px;
            height: 200px;
            background: lightcoral;
            position: absolute;
        }
    </style>
</head>
<body>

<div class="container">
    <div class="target"></div>
</div>

<script>
    window.onload = function(){
        var maxW = document.documentElement.clientWidth;
        var maxH = document.documentElement.clientHeight;
        document.querySelector('.container').style.width = maxW;
        var target = document.querySelector('.target');
        var startX = 0;
        var startY = 0;
        
        target.addEventListener('touchstart', function(e){
            startX = e.targetTouches[0].pageX - this.offsetLeft;
            startY = e.targetTouches[0].pageY - this.offsetTop;
        });
        target.addEventListener('touchmove', function(e){
            var leftX = e.targetTouches[0].pageX - startX;
            var topY = e.targetTouches[0].pageY - startY;
            var thisW = e.targetTouches[0].target.clientWidth;
            var parentW = e.targetTouches[0].target.offsetParent.clientWidth;
            var thisH = e.targetTouches[0].target.clientHeight;
            var parentH = e.targetTouches[0].target.offsetParent.clientHeight;

            if(leftX <= 0){
                leftX = 0;
            }

            if(leftX >= parentW - thisW){
                leftX = parentW - thisW;
            }

            if(topY <= 0){
                topY = 0;
            }

            if(topY >= parentH - thisH){
                topY = parentH - thisH;
            }

            this.style.left = leftX + 'px';
            this.style.top = topY + 'px';
            this.innerHTML = '我又被揪起来了,真烦人!';
        });
        target.addEventListener('touchend', function(e){
            this.innerHTML = '你终于放弃揪着我了,谢谢!';
        });
    };
</script>

</body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值