移动化拖拽元素移动

<!DOCTYPE html>

<html lang="en">



<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <style>

        body{

            margin: 0;

        }

        #touchMove {

            position: relative;

            width: 100px;

            border: 1px solid red;

        }

    </style>

</head>



<body>

    <div id="touchMove" class="">开始体验</div>



    <script>

        window.onload = function () {



            var oDiv = document.getElementById('touchMove');

            var disX, moveX, L, T, starX, starY, starXEnd, starYEnd;

            oDiv.addEventListener('touchstart', function (e) {

                e.preventDefault();//阻止触摸时页面的滚动,缩放

                oDiv.style.transition = 'none'

                disX = e.touches[0].clientX - this.offsetLeft;

                disY = e.touches[0].clientY - this.offsetTop;

                //手指按下时的坐标

                starX = e.touches[0].clientX;

                starY = e.touches[0].clientY;

                //console.log(disX);

            });



            oDiv.addEventListener('touchmove', function (e) {

                L = e.touches[0].clientX - disX;

                T = e.touches[0].clientY - disY;

                //移动时 当前位置与起始位置之间的差值

                starXEnd = e.touches[0].clientX - starX;

                starYEnd = e.touches[0].clientY - starY;

                console.log( e.touches[0].clientX , disX);

                if (L < 0) {//限制拖拽的X范围,不能拖出屏幕

                    L = 0;

                }else if (L > document.documentElement.clientWidth - this.offsetWidth) {

                    L = document.documentElement.clientWidth - this.offsetWidth;

                }

                if (T < 0) {//限制拖拽的Y范围,不能拖出屏幕

                    T = 0;

                }else if (T > document.documentElement.clientHeight - this.offsetHeight) {

                    T = document.documentElement.clientHeight - this.offsetHeight;

                }

                moveX = L + 'px';

                moveY = T + 'px';

                this.style.left = moveX;

                this.style.top = moveY;

                console.log(moveX);

            });



            window.addEventListener('touchend', function (e) {

                //alert(parseInt(moveX))

                //判断滑动方向

                //判断滑动方向

                oDiv.style.transition = 'all 0.3s'

                if (L > document.documentElement.clientWidth / 2) {

                    oDiv.style.left = document.documentElement.clientWidth - oDiv.offsetWidth  + 'px'

                } else {

                    oDiv.style.left = 0

                }

            });



        }

    </script>

</body>



</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值