继承的拖拽练习

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>拖拽</title>
  6 </head>
  7 <style type="text/css">
  8 *{margin:0px;padding:0px;}
  9 .content{width:100%;position: relative;}
 10 .drag{width:300px;height:200px;background: #ccc;border:1px solid #999;position: absolute;left:100px;top:100px;z-index:2;
 11 box-shadow: 1px 10px 10px #ccc;}
 12 .drag .dragBar{width:100%;height:30px;background:#666;display: block;cursor:move;border-bottom:1px solid #999;}
 13 .drag p{padding:20px;color:#000;}
 14
 15 .dragShow{width:298px;height:198px;border:1px dashed #999;position: absolute;z-index:1;line-height: 198px;text-align:center;color:#ccc;}
 16 .dragShow2{width:298px;height:198px;border:1px dashed #f00;position: absolute;z-index:1;line-height: 198px;text-align:center;color:#f00;
 17 font-size:20px;}
 18 </style>
 19 <script type="text/javascript">
 20 window.onload=function(){
 21     var oContent=document.getElementById(‘content‘);
 22     function Drag(dragDom,dragBar){
 23         this.dragDom=document.getElementById(dragDom);
 24         this.dragBar=document.getElementById(dragBar);
 25         this.disX=0;
 26         this.disY=0;
 27         this.L=0;
 28         this.T=0;
 29         this.inint();
 30         this.creatDiv=null;
 31     }
 32     Drag.prototype={
 33         constructor:Drag,
 34         inint:function(){
 35             var _this=this;
 36             this.dragBar.onmousedown=function(ev){
 37                 var ev=ev||window.event;
 38                 _this.mouseDownFn(ev);
 39                 document.onmousemove=function(ev){
 40                     var ev=ev||window.event;
 41                     _this.mouseMoveFn(ev);
 42                 }
 43                 document.onmouseup=function(){
 44                     _this.mouseUpFn();
 45                     document.onmousemove=null;
 46                     document.onmouseup=null;
 47                 }
 48                 return false;
 49             }
 50         },
 51         mouseDownFn:function(ev){
 52
 53             this.disX=ev.clientX-this.dragDom.offsetLeft;
 54             this.disY=ev.clientY-this.dragDom.offsetTop;
 55             this.creatDiv=document.createElement(‘div‘);
 56             this.creatDiv.className=‘dragShow‘;
 57             this.creatDiv.style.left=this.dragDom.offsetLeft+‘px‘;
 58             this.creatDiv.style.top=this.dragDom.offsetTop+‘px‘;
 59             this.creatDiv.innerHTML=‘Drag Box‘;
 60             oContent.appendChild(this.creatDiv);
 61
 62         },
 63         mouseMoveFn:function(ev){
 64             //console.log(this.disX)
 65             this.L=ev.clientX-this.disX;
 66             this.T=ev.clientY-this.disY;
 67             if(this.L<0){
 68                 this.L=0;
 69             }else if(this.L>document.documentElement.clientWidth-this.creatDiv.offsetWidth){
 70                 this.L=document.documentElement.clientWidth-this.creatDiv.offsetWidth;
 71             }
 72             if(this.T<0){
 73                 this.T=0;
 74             }else if(this.T>document.documentElement.clientHeight-this.creatDiv.offsetHeight){
 75                 this.T=document.documentElement.clientHeight-this.creatDiv.offsetHeight;
 76             }
 77
 78             this.creatDiv.style.left=this.L+‘px‘;
 79             this.creatDiv.style.top=this.T+‘px‘;
 80
 81         },
 82         mouseUpFn:function(){
 83             oContent.removeChild(this.creatDiv);
 84             this.dragDom.style.left=this.L+‘px‘;
 85             this.dragDom.style.top=this.T+‘px‘;
 86         }
 87     }
 88     extend(ChildDrag.prototype,Drag.prototype);
 89     function ChildDrag(dragDom,dragBar){
 90         Drag.call(this,dragDom,dragBar);
 91
 92     }
 93     ChildDrag.prototype.constructor=ChildDrag;
 94
 95     ChildDrag.prototype.mouseDownFn=function(ev){
 96
 97             this.disX=ev.clientX-this.dragDom.offsetLeft;
 98             this.disY=ev.clientY-this.dragDom.offsetTop;
 99             this.creatDiv=document.createElement(‘div‘);
100             this.creatDiv.className=‘dragShow2‘;
101             this.creatDiv.style.left=this.dragDom.offsetLeft+‘px‘;
102             this.creatDiv.style.top=this.dragDom.offsetTop+‘px‘;
103             this.creatDiv.innerHTML=‘extend Drag Box‘;
104             oContent.appendChild(this.creatDiv);
105
106     }
107     function extend(newObj,oldObj){
108         for(attr in oldObj){
109             newObj[attr]=oldObj[attr];
110         }
111     }
112     new Drag(‘drag1‘,‘dragBar1‘);
113     new Drag(‘drag2‘,‘dragBar2‘);
114     new ChildDrag(‘drag3‘,‘dragBar3‘);
115 }
116 </script>
117 <body>
118 <div class="content" id="content">
119     <div class="drag" id="drag1">
120         <span class="dragBar" id="dragBar1"></span>
121         <p>Drag box</p>
122     </div>
123     <div class="drag" id="drag2">
124         <span class="dragBar" id="dragBar2"></span>
125         <p>Drag box</p>
126     </div>
127     <div class="drag" id="drag3">
128         <span class="dragBar" id="dragBar3"></span>
129         <p>extend Drag box</p>
130     </div>
131 </div>
132 </body>
133 </html>
时间: 2024-10-28 23:48:01

继承的拖拽练习的相关文章

基于继承的拖拽

1 window.onload = function() { 2 new Drag("div1"); 3 new LimitDrag("div2"); 4 }; 5 6 //父类 7 function Drag(id) { 8 var _this = this; 9 10 this.disX = 0; 11 this.disY = 0; 12 this.oDiv = document.getElementById(id); 13 14 this.oDiv.onmou

用面向对象写一个拖拽,并实现继承

思路:先用面过过程的方法将要实现的效果实现出来,然后按照以下步骤将拆分成面向对象 //面向过程的程序改写成面向对象程序不能有函数嵌套 //将window.onload初始化整个程序改为构造函数初始化整个对象 //将面向过程中的变量改为属性 //将面向过程中的函数改为方法 index.html代码: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">

Qt之QAbstractItemView视图项拖拽(二)

一.需求说明 上一篇文章Qt之QAbstractItemView视图项拖拽(一)讲述了实现QAbstractItemView视图项拖拽的一种方式,是基于QDrag实现的,这个类是qt自己封装好了的,所以可定制性也就没有了那么强,最明显的是,这个类在执行exec方法后,mouse系列的回调接口就被阻塞了,随之而来的问题就是拖拽时item项没有了hover特性,为了解决这个问题,我们就不能使用QDrag类来实现拖拽了,这也是这篇文章我要讲述的内容. 二.效果展示 如图1是demo的效果展示,比较丑,

JAVA UI 拖拽功能

java GUI拖拽功能是很实用也相对高级一些的功能. 有一小部分的GUI控件支持他们有dragEnabled属性.这些JComponent包括:javax.swing.JColorChooserjavax.swing.JFileChooserjavax.swing.JListjavax.swing.JTablejavax.swing.JTreejavax.swing.text.JTextComponent 大部分的控件不支持没有这个属性,尤其是常用的jpanel和jframe. 一种简单的方法

android开发游记:SpringView 下拉刷新的高效解决方案,定制你自己风格的拖拽页面

关于下拉刷新/上拉加载更多的解决方案网上已经有很多了,浏览了目前主流的下拉控件比如PullToRefresh库等,第一:大多数实现库都难以进行动画和样式的自定义.第二:不能很好的兼容多种滚动控件,它们都对listView.RecyclerView等进行了不同程度的重新实现,你在项目中就得使用库提供的PullToRefreshListView.PullToRefreshRecyclerView等来代替源生的listView.RecyclerView等,这样的方式其实并不好,随着android版本的

qt 拖拽 修改大小(二)

最近项目需要实现windows下橡皮筋的效果,所以对此做了一些了解,特此记录. 首先windows系统是支持橡皮筋效果的,需要使用win32方 法:SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, showFullWindow, NULL, 0);showFullWindow是一个变量,如果需要windows默认支持橡皮筋则需要传递参数false,否则传递参数true,如果使用 windows默认的橡皮筋缩放,效果如图1所示,会产生一个矩形框,不管是窗口移

iOS边练边学--触摸事件以及能够拖拽的UIView的练习

一.用户在使用APP的过程中,会产生各种各样的事件.iOS中的事件可以分为3大类型: 二.响应者对象 在iOS中只有继承了了UIResponder的对象才能接受并处理事件,这样的对象称之为“响应者对象” UIApplication.UIViewController.UIView都继承自UIResponder,因此他们都是响应者对象,都能够接受并处理事件 UIResponder内部提供了以下方法来处理事件 三.练习中对UIView的触摸事件进行了熟悉 四.UITouch 一根手指对应一个UITou

JavaScript鼠标拖拽特效及相关问题总结

#div1{width:200px;height:200px;background:red;position:absolute;} #div2{width:200px;height:200px;background:green;position:absolute;left:300px;} <div id="div1">原来的 普通拖拽</div> <div id="div2">继承的 限制范围拖拽</div> wind

textarea的拖拽怎么解决

textarea文本域在页面中是可以拖动的,即时你给了固定的宽度和高度,但这在我们页面布局中,使我们不需要的,因为可拖拽很多时候会影响我们页面的布局和整体的美观度. css3提供了一个resize属性,可以帮助我们解决这个问题: 1 textarea { 2 width:700px; 3 height:300px; 4 border:1px solid #bcbcbc; 5 resize:none; 6 } resize: 1.both(默认值)--在xy方向上均可以拖拽: 2.vertical