zoukankan      html  css  js  c++  java
  • 移动端简单拖拽

      移动端拖拽需要通过 ontouchstartontouchmoveontouchendontouchcancel(本例中未使用)这四个事件实现。

      demo如下:

    <!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 {
                 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>
  • 相关阅读:
    【bzoj2962】序列操作 线段树
    【bzoj1922】[Sdoi2010]大陆争霸 堆优化Dijkstra
    .NET Core / C# 开发 IOT 嵌入式设备的个人见解
    C#中Equals和= =(等于号)的比较)
    VS 2017常用快捷键
    【你不一定知晓的】C#取消异步操作
    工程实践:给函数取一个"好"的名字
    接口测试入门篇
    博客园知名博主 Vamei 英年早逝!
    人生苦短,我用 Python
  • 原文地址:https://www.cnblogs.com/SophiaLees/p/9546903.html
Copyright © 2011-2022 走看看