账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    移动端拉拽事件
    65
    0

    1.判断事件在距离顶端100px时改变背景色为blue
    2.在chrome移动端模式中mousedown/up/move失效

    <template>
         <div id="box">
            <p><strong>拖动状态:</strong><span></span></p>
            <p><strong>距离顶端:</strong><span></span></p>
        </div>
    </template>
    
    <script>
    export default {
      mounted(){
        window.onload = function() {
            var oBox = document.getElementById("box");
            var aSpan = oBox.getElementsByTagName("span");
            var disY = 0;
            var bDrag = false;
            var aPos = [{
                y: oBox.offsetTop
            }]
            
            //鼠标按下, 激活拖拽 
            oBox.onmousedown = function(event) {
                var event = event || window.event;
                bDrag = true;
                disY = event.clientY - oBox.offsetTop;
                  this.setCapture && this.setCapture();
                  return false 
            };
            
            //拖拽开始 
            document.onmousemove = function(event) {
                if(!bDrag) return;
                var event = event || window.event;
                var iT = event.clientY - disY;
                var maxT = document.documentElement.clientHeight - oBox.offsetHeight;
                iT = iT < 0 ? 0 : iT;
                iT = iT > maxT ? maxT : iT;
                oBox.style.marginTop = oBox.style.marginLeft = 0;
                oBox.style.top = iT + "px";
                aPos.push({
                    y: iT
                })
                status();
                return false
            };
    
            //鼠标释放, 结束拖拽 
            document.onmouseup = window.onblur = oBox.onlosecapture = function() {
                bDrag = false;
                oBox.releaseCapture && oBox.releaseCapture();
                status()
            };
    
            //监听状态函数 
            function status() {
                aSpan[0].innerHTML = bDrag;
                aSpan[1].innerHTML = oBox.offsetTop;
            }
    
            //初始调用 
            status()}
          }
    }
    </script>
    
    <style>
          html,body{
            overflow: hidden;
        }
                
        body,div,p{
            margin: 0;
            padding: 0;
        }
                
        body {
            font: 12px/2 Arial;
        }
                
        p {
            padding: 0 10px;
            margin-top: 10px;
        }
        
        span {
            padding-left: 5px;
        }
        
        #box {
            position: absolute;
            width: 150px;
            height: 150px;
            border: 2px solid #ccc;
            top: 0%;
            left: 0%;
        }
        
    </style>
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 共 0 条
    • 最爱一颗咸蛋。 普通会员 1楼

      移动端拉拽事件是移动端常见的一种操作,通常是通过JavaScript来实现的。

      以下是一个简单的例子:

      HTML部分:

      ```html

      拖拽目标
      拖拽容器

      ```

      JavaScript部分:

      ```javascript var dragTarget = document.getElementById('drag-target'); var drag Constrainer = document.getElementById('drag-constrainer');

      dragTarget.addEventListener('dragstart', function(e) { drag Constrainer.style.width = '100px'; drag Constrainer.style.height = '100px'; });

      dragTarget.addEventListener('drag', function(e) { e.preventDefault(); drag Constrainer.style.width = e.target.offsetWidth; drag Constrainer.style.height = e.target.offsetHeight; });

      dragTarget.addEventListener('dragend', function(e) { drag Constrainer.style.width = '0px'; drag Constrainer.style.height = '0px'; }); ```

      在这个例子中,我们首先获取了拖拽目标和拖拽容器的元素,然后为它们添加了dragstart,drag和dragend事件监听器。当用户开始拖拽目标时,我们阻止了默认的移动行为,然后设置了拖拽容器的宽度和高度。当用户停止拖拽时,我们恢复了默认的移动行为,然后设置了拖拽容器的宽度和高度。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部