> php教程 > php手册 > 본문

javascript 拖动div

WBOY
풀어 주다: 2016-06-07 11:44:27
원래의
1040명이 탐색했습니다.

一个用用js实现的拖动方法
有时候有些页面我们没必要引入jquery这样的类库,而我们有时候又得实现某个div层的拖动,这时候这个东东就派上用场了。。。

上传附件上传了好几次 上不去 。。。 贴代码吧/**<br>  * js拖动类 目前一个对象只能够使一个容器得到拖动<br>  * @author yulipu<br>  <br>  * 用法1 普通div<br>  *    <div> <br>  *        这里是内容<br>  *    </div> <br>  * var drag = new YDrag();<br>  * drag.drag({<br>  *         targetDragObj : document.getElementById('outer'),  //必须项 要拖动的目标对象<br>  *        dragX : false,  //不允许横向拖动<br>  *        dragY : true<br>  * });  <br>  * <br>  * 用法2 模拟对话框<br>  *    <div> <br>  *        <div>这里是标题</div> <br>  *        <div>这里是内容</div> <br>  *    </div> <br>  * var drag = new YDrag();<br>  * drag.drag({<br>  *         targetDragObj : document.getElementById('outer'),  //必须项 要拖动的目标对象<br>  *        srcDragObj : document.getElementById('title'),  //非必须项 指定标题部分div<br>  *        dragX:false,  //不允许横向拖动<br>  *        callback : function(){<br>                        //alert(this.x);  // x坐标<br>                        //alert(this.y);  // y坐标<br>                 }  //指定一个回调函数 这个函数可以得到当前容器坐标位置 <br>  * });  <br>  */<br> function YDrag() {<br>     var diffX = 0;  //当前鼠标和容器left距离的差  当前位置-这个差值就是容器的left值<br>     var diffY = 0;<br>     var _self = this;<br>     var options = {};<br>     <br>     var yE = {<br>         /**<br>          * 添加事件<br>          * @param ele 要添加事件的元素<br>          * @param type 事件类型 如click<br>          * @param fun 回调函数<br>          */<br>         bind : function(ele, type, fun) {<br>             if(ele.addEventListener) {  //FF<br>                 ele.addEventListener(type, fun, false);<br>             }else if(ele.attachEvent) {  //IE<br>                 ele.attachEvent('on' + type, fun);<br>             } else {  //DOM<br>                 ele['on'+type] = fun;<br>             }<br>         },<br>     <br>         /**<br>          * 删除事件<br>          */<br>         unbind : function(ele, type, fun) {<br>             if(ele.removeEventListener) {<br>                 ele.removeEventListener(type, fun, false);<br>             } else if(ele.detachEvent) {<br>                 ele.detachEvent('on' + type, fun);<br>             } else {<br>                 ele['on'+type] = null;<br>             }<br>         }<br>     };<br>     <br>     this._mousedown = function(e) {<br>         e = e || window.event;<br>         options.targetDragObj.style.position = 'absolute';<br>         <br>         diffX = e.clientX - options.targetDragObj.offsetLeft;  //初始化差值<br>         diffY = e.clientY - options.targetDragObj.offsetTop;<br>         yE.bind(document, 'mousemove', _self._mousemove);  //往document上添加事件 当鼠标在document范围内移动式都触发移动事件<br>         yE.bind(document, 'mouseup', _self._mouseup);<br>     };<br>     <br>     this._mousemove = function(e) {<br>         e = e || window.event;<br>         if(options.dragable) {<br>             options.dragX && (options.targetDragObj.style.left = e.clientX - diffX + 'px');<br>             options.dragY && (options.targetDragObj.style.top =  e.clientY - diffY + 'px');<br>             if(options.callback){<br>                 //返回当前容器坐标<br>                 var obj = {'x' : e.clientX - diffX, 'y' : e.clientY - diffY};<br>                 options.callback.call(obj);<br>             }<br>         }<br>     };<br>     <br>     this._mouseup = function(e) {<br>         yE.unbind(document, 'mousemove', _self._mousemove);<br>         yE.unbind(document, 'mouseup', _self._mouseup);<br>     };<br>     <br>     this.drag = function(opt) {<br>         options = {<br>             dragable : true,<br>             targetDragObj : opt.targetDragObj,<br>             srcDragObj : opt.srcDragObj,<br>             dragX : opt.dragX != false,  //横向拖动<br>             dragY : opt.dragY != false,  //纵向拖动<br>             callback : opt.callback<br>         };<br>         if(options.srcDragObj) {options.srcDragObj.style.cursor='move';} else {options.targetDragObj.style.cursor='move'}<br>         undefined == options.srcDragObj ? <br>             yE.bind(options.targetDragObj, 'mousedown', this._mousedown) :<br>             yE.bind(options.srcDragObj, 'mousedown', this._mousedown);<br>     };<br> }

AD:真正免费,域名+虚机+企业邮箱=0元

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿