Heim  >  Artikel  >  php教程  >  javascript 拖动div

javascript 拖动div

WBOY
WBOYOriginal
2016-06-07 11:44:271011Durchsuche

一个用用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元

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:瀑布流JS插件Nächster Artikel:在thinkphp框架中添加404页面的方法