Javascript 一个拖动类

2016-02-19 15:51 2 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享Javascript 一个拖动类,希望可以对大家能有小小的帮助。

【 tulaoshi.com - Web开发 】

HTML
 HEAD
  SCRIPT LANGUAGE="JavaScript"
  !--
 var Drag = {
  sx : 0,
  sy : 0,
  ex : 0,
  ey : 0,
  lx : 0,
  ly : 0,
  offsetX : 0,
  offsetY : 0,
  cdom : null,
  dragAble : false,
  dragFun : null,
  tempDrag : function(){
   Drag.drag.call(Drag);
  },
  cache : {},
  putCache : function(key,v){
   this.cache[key] = v;
  },
  getCache : function(key){
   return this.cache[key];
  },
  dragStart : function(dfun,fn){
   try{
    if(!this.dragAble){
     this.cdom = event.srcElement?event.srcElement:event.target;
     this.cdom.setCapture(true);
     this.sx = event.screenX;
     this.sy = event.screenY;
     this.ex = event.screenX;
     this.ey = event.screenY;
     this.lx = event.screenX;
     this.ly = event.screenY;
     this.dragAble = true;
     this.dragFun = dfun?dfun:null;
     if(fn){fn();}
     this.cdom.attachEvent("onmousemove",Drag.tempDrag);
    }
   }catch(e){
    this.dragEnd();
   }
  },
  drag : function(){
   try{
  
    if(this.dragAble){
     this.ex = event.screenX;
     this.ey = event.screenY;
     this.offsetX = this.ex - this.lx;
     this.offsetY = this.ey - this.ly;
     if(this.dragFun){this.dragFun();}
     this.lx = this.ex;
     this.ly = this.ey;
    }
   }
   catch(e){
    this.dragEnd(null);
   }
  },
  dragEnd : function(fn){
   if(this.dragAble){
    this.cdom.detachEvent("onmousemove",Drag.tempDrag);
    this.cdom.releaseCapture();
    this.ex = event.screenX;
    this.ey = event.screenY;
    this.dragAble = false;
    if(fn){fn();}
   }
   this.releaseDrag();
  },

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)  releaseDrag : function(){
   this.ex = 0;
   this.ey = 0;
   this.sx = 0;
   this.sy = 0;
   this.cdom = null;
   this.dragAble = false;
   this.dragFun = null;
   this.cache = {};
  }
 };
 
 function start(){
  var d = Drag.cdom.cloneNode(true);
  var pos = getBodyPos(Drag.cdom);
  with(d.style){
   position="absolute";
   left=pos.left;
   top=pos.top;
   filter='Alpha(Opacity="30")' ;
  }
  Drag.putCache("alo",d);
  document.body.appendChild(d);
 
 }
 function ing(){
  var offx = Drag.offsetX;
  var offy = Drag.offsetY;
  var to = Drag.getCache("alo");
  var l = to.offsetLeft;
  var t = to.offsetTop;
  with(to.style){
   left=l+offx;
   top=t+offy;
  }
 }
 function end(){
  var cdom = Drag.cdom;
  var alo = Drag.getCache("alo");
  with(cdom.style)
  {
   left=alo.offsetLeft;
   top=alo.offsetTop;
   position="absolute";
  }
  if(alo)
   document.body.removeChild(alo);
 }
 function getBodyPos(obj){
  try{
   var l = obj.offsetLeft;
   var t = obj.offsetTop;
   while(obj.parentElement != document.body){
    obj = obj.parentElement;
    var tl = obj.offsetLeft;
    var tt = obj.offsetTop;
    l += tl;
    t += tt;
   }
   return {left:l,top:t};
  }catch(e){
   alert(e.message);
  }
 }
  //--
  /SCRIPT
 /HEAD
 BODY
  div style="border:solid 1 #7FFFD4;width:300;height:150;background:#3399FF;cursor:move;" onmousedown="Drag.dragStart(ing,start)" onmouseup="Drag.dragEnd(end)"
  Test Drag Object
  /div
 /BODY
/HTML

来源:https://www.tulaoshi.com/n/20160219/1610572.html

延伸阅读
标签: Web开发
基本用法: 代码如下: var ajax = new AjaxObj(url); ajax.addListener(200, function(r){ alert(r); }); ajax.send(); 也可以连续调用: 代码如下: var ajax = new AjaxObj(url).addListener(200, function(r){ alert(r); }).send(); 另外还支持自定义的POST或GET方式请求,以及监视不同的HTTP状态码,自己看代码琢磨...
标签: Web开发
JavaScript 我喜爱的一种程序设计语言,但这个名字起得实在够烂。这个程序事实上与Java没有任何关系。这点我可以确定。既然ECMA正在致力于设计JavaScript的下一个版本(代码名为ES4),那么就应该给JavaScript取一个新的名字。 怎样才能起一个响亮的名字呢?虽然我不是起名专家,但有些原则还是显而易见的。首先,名字要独特又好记的...
标签: Web开发
下面我们通过一个例子,编写第一个 JavaScript 程序。 通过它可说明JavaScript的脚本是怎样被嵌入到HTML文档中的。test1.html文档: html head Script Language ="JavaScript" // JavaScript Appears here. alert("这是第一个JavaScript例子!"); alert("欢迎你进入JavaScript世界!"); alert("今后...
标签: Web开发
用法:  new Ajax().Request(url,cmd,async,method,postString,title)  参数:  url: 请求页面URL(必填)  cmd: 返回值处理函数(必填)  async: 是否异步 ,(ture|false), 默认true  method: 请求方式,(post|get), 默认get  postString: 请求方式为pos...
标签: PHP
  <?php /* 如有转载,请注明作者 原作者: 何志强 改进: SonyMusic[ sonymusic@163.net ] 文件: ubb.php 备注: 说是改进,其实核心函数parse()已经完全重写了,而且思路也是不一样的。 不过仍是受何志强的例子的启发,而且测试的例子还有URLCHECK等几个函数也是沿用的何志强的程序,谢谢何志强。 目前还没有颜色的功能,但我...

经验教程

890

收藏

52
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部