zoukankan      html  css  js  c++  java
  • javascript——限制范围的拖拽

    CSS部分:

    #div1 {width: 100px; height: 100px; background: red; position: absolute;}
    #img1 { position: absolute;}

    HTML部分:

    <div id="div1"></div>
    <img src="img/1.jpg" id="img1" />

    JS部分:

    window.onload = function(){
    
        // 获取相关元素
        var oDiv = document.getElementById('div1');
        var oImg = document.getElementById('img1');
    
        // 函数调用
        drag(oDiv);
        drag(oImg);
    
        // drag函数封装
        function drag(obj){
    
            // 拖拽第一步:鼠标按下时触发
            obj.onmousedown = function(ev){
    
                // 获取事件对象
                var ev = ev || event;
    
                // 获取鼠标按下时的坐标位置
                var disX = ev.clientX - this.offsetLeft;
                var disY = ev.clientY - this.offsetTop;
    
                // 判断获取捕获
                if(obj.setCapture){
                    obj.setCapture();
                }
    
                // 拖拽第二步:鼠标移动时触发
                document.onmousemove = function(ev){
    
                    // 获取事件对象
                    var ev = ev || event;
    
                    // 获取当前对象距离X/Y轴的距离
                    var L = ev.clientX - disX;
                    var T = ev.clientY - disY;
    
                    // 判断是否超出左边界
                    if(L < 0 ){
                        L = 0;
                    }else if( L > document.documentElement.clientWidth - obj.offsetWidth){
                        L = document.documentElement.clientWidth - obj.offsetWidth;
                    }
    
                    // 判断是否超出上边界
                    if(T < 0){
                        T = 0;
                    }else if( T > document.documentElement.clientHeight - obj.offsetHeight){
                        T = document.documentElement.clientHeight - obj.offsetHeight;
                    }
    
                    // 然后获取当前对象距离左边、上边的距离
                    obj.style.left = L + 'px';
                    obj.style.top = T + 'px';
                };
    
                // 拖拽第三步:鼠标释放时触发
                document.onmouseup = function(){
                    
                    document.onmousemove = document.onmouseup = null;
    
                    // 判断释放捕获
                    if(obj.releaseCapture){
                        obj.releaseCapture();
                    }
                };
    
                // 阻止默认事件
                return false;
            };
        };
    };

    修改if条件的L/T小于号后面的数值可以使它有种磁性吸附的感觉。

  • 相关阅读:
    Balanced Number [ZOJ 3416]
    动态树
    Jason的特殊爱好 [FZU 2113]
    Raney引理
    Tri Tiling [POJ 2663]
    糖尿病的虾青素+胰岛素疗法 (转)
    JAVASCRIPT 开发工具:aptana ,WebStorm
    众志和达,英文SOUL 存储与数据安全提供商
    健身音乐及其它
    nodejs + CompoundJS 资源
  • 原文地址:https://www.cnblogs.com/bokebi520/p/4380782.html
Copyright © 2011-2022 走看看