17.移动端拖动的效果

1,521 阅读1分钟
  1. 触摸元素 touchstart: 获取手指初始坐标,同时获得盒子原来的位置
    2.移动手指 touchmove: 计算手指的滑动距离,并且移动盒子
    3.离开手指 touchend:
    4.移动端拖动的效果案例
<!DOCTYPE html>
<html lang="CH-zn">
<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>移动端拖动元素</title>
    <style type="text/css">
     div {
            position: absolute;
            left: 0;
            width: 100px;
            height: 100px;
            background-color: pink;
        }
    </style>
   
</head>
<script type="text/javascript">
        // 写在上面需要加wind 事件
        window.addEventListener('load',function(){
        // 1.获取元素
        var  div = document.querySelector('div');
        // 定义初始化 手指的位置
        var  startX = 0;
        var  startY = 0 ;
        var x = 0 ; // 盒子的原始位置
        var y =  0 ; // 
           
        // 2.触摸元素 touchstart:  获取手指初始坐标,同时获得盒子原来的位置
         div.addEventListener('touchstart',function(e){
           startX = e.targetTouches[0].pageX ; // 得到第一个手机的 文档位置
           startY = e.targetTouches[0].pageY ; 
           //同时获取盒子的位置
           x = this.offsetLeft ; //得到盒子的边距
           y = this.offsetTop ; 
           
         } )
       // 3.手机点击 touchmove  移动手指 touchmove:  计算手指的滑动距离,并且移动盒子
        div.addEventListener('touchmove',function(e){
             //  计算手指的移动距离: 手指移动之后的坐标减去手指初始的坐标
             var moveX = e.targetTouches[0].pageX - startX ;
             var moveY = e.targetTouches[0].pageY - startY ;
               // 移动我们的盒子 盒子原来的位置 + 手指移动的距离
               this.style.left = x + moveX +'px';
               this.style.top = y +moveY + 'px';
               e.preventDefault(); // 阻止屏幕滚动的默认行为
            
        })
       
        })
    
       
</script>

</head>

<body>
    <div></div>
     
</body>
</html>