js拖拽 采用简单的闭包实现方式
复制代码 代码如下:
/**
* Created with JetBrains WebStorm.
* User: lsj
* Date: 12-11-24
* Time: 下午12:59
* To change this template use File | Settings | File Templates.
*/
var dragmanager=(function()
{
//标识移动元素z轴坐标
var index_z=1;
//当前的拖拽元素
var drganow;
//移动标识符号
var dragbegin=false;
//鼠标点击时距离div左边距离
var relativex=0;
//鼠标点击时距离div上边距离
var relativey=0;
//标识鼠标是否移出
var isout=false;
return {
/**
* 为document绑定鼠标提起事件,主要防止鼠标移动过快跳出el区域
*/
bingDocOnMouseUp:function()
{
//注册全局的onmouseup事件,主要防止鼠标移动过快导致鼠标和el不同步
document.onmouseup=function(e)
{
var ev = window.event || e;
if(isout && dragbegin)
{
//改变div的相对位置
drganow.style.left= (ev.clientX-relativex)+'px';
drganow.style.top=(ev.clientY-relativey)+'px';
drganow.style.cursor='normal';
dragbegin=false;
isout=false;
}
}
},
/**
* 将注入的元素绑定事件
* @param el
*/
registerElementEv:function(element)
{
element.onmousedown=function(e)
{
var ev = window.event || e;
var clientx=ev.clientX;
var clienty= ev.clientY;
var left= parseInt(this.style.left.substring(0, this.style.left.indexOf("p")));
var top= parseInt(this.style.top.substring(0, this.style.top.indexOf("p")));
relativex=clientx-left;
relativey=clienty-top;
index_z++;
this.style.zIndex=index_z;
drganow=this;
dragbegin=true;
}
element.onmousemove=function(e)
{
var ev = window.event || e;
//开始拖拽
if(dragbegin)
{
//改变div的相对位置
this.style.left= (ev.clientX-relativex)+'px';
this.style.top=(ev.clientY-relativey)+'px';
this.style.cursor='move';
}
}
element.onmouseout=function(e)
{
isout=true;
}
element.onmouseup=function(e)
{
var ev = window.event || e;
if(dragbegin)
{
//改变div的相对位置
drganow.style.left= (ev.clientX-relativex)+'px';
drganow.style.top=(ev.clientY-relativey)+'px';
drganow.style.cursor='normal';
dragbegin=false;
}
}
}
}
})();
1.采用闭包的形式实现 ,方便后期的维护,将移动过程所需的变量全部转移进gridmanager里面
2.拖拽过程中 鼠标移动过快导致移动元素跟不上鼠标的移动,所以要注册document.oumouseup事件,该事件的开关是有移动元素的onmouseout事件触发的
3.拖拽的过程中可能会触发浏览器自身的onmousemove的select事件,可以进行屏蔽ie下是onmousemove="document.selection.empty()"
相关推荐:
ChatGPT的梯子:突破网络壁垒,畅享智能对话的全新体验,ai的音标1001ai的音标
SEO地址优化的秘诀:提升网站排名与流量的关键,临沂如何优化网站关键词
什么是seo手段,seo的具体手段 ,中国ai 企业
seo项目是什么,seo是啥 ,ai ued
SEO前的准备工作:如何让网站为搜索引擎优化做好充分准备,SEO_网站排名优化_网络推广
seo追词是什么,seo词条 ,52580609AI
【BVIP尊享体验:超越奢华,开启专属未来】,珠宝网站建设思路
WPJam:打破网站管理的壁垒,打造极致用户体验,广东谷歌seo工具
ChatGPT恢复正常使用时间,提升你的工作与生活效率,联想电脑AI0510
怎么用AI缩写文章,轻松提高效率的全新方法
SEO关键词是什么意思?全面解析SEO关键字的核心作用,华为ai音箱 百度ai音箱
SEO收费如何选择合适的SEO服务,提升网站排名并增加曝光度,做网站优化哪家实惠
SEO与SEM:谁才是提升网站流量的王者?,Ai中字体如何变形立体
ChatGPT崩了?用户称打开是一片空白,背后隐藏了什么?,ai 新技巧
ChatGPT:引领人工智能对话新时代的智能助手,Ai shiang
什么是seo优化营销,seo主要优化什么 ,ai绘画国风古韵
SEO优化中怎么找关键词:全面解析与实战技巧,ai2002.4.8
SEO要求:如何优化网站提升搜索引擎排名,助力企业获取更多流量,鹤山区网站运营推广
seo经理做什么的,seo经理招聘 ,盲人ai眼镜
AI+写文章:开启智能创作新时代
seo用什么法宝,列出5种seo赚钱方式 ,ai怎么更改文档样式
SEO要不,来看看如何通过SEO优化提高网站流量和曝光度,seo 获客技巧
SEO查看-如何通过精确分析提升网站流量与排名,东丽网站建设价格
主流seo是什么,seo是什么推广网站 ,AI心理师
seo经验是什么,seo进阶 ,ai矿机
AI的两个主要发展阶段:从起步到突破,如何重塑未来,wps ai写作去哪里
SEO自从上线后的演变与未来发展趋势,拼多多增加关键词排名
SEO热词:提升网站排名的关键秘诀,一句话营销推广怎么写好
ChatGPT:打破语言障碍,理解与沟通的新时代,交通轨道ai
AI一键生成文章免费:革新写作方式,提升创作效率
SEO有意:如何通过优化策略提升网站排名与流量,天津政府智慧网站建设
ChatGPT:如果您正在使用VPN,这些技巧您一定要知道!,AI换脸*H
软件AI:颠覆未来的智能革命
SEO更多-让你的企业站点在搜索引擎中脱颖而出,如何结交seo大神
SEO分类:从基础到进阶,全面解析SEO优化的关键要素,新建设网站排名
二级泛站群,zblog二级泛站群 ,李宗盛ai
什么是seo快排,seo快排方案 ,ai剪图形
seo能解决什么问题,seo会遇到哪些问题 ,挚爱花嫁ai
SEO任何:如何通过精准优化让网站流量突破极限,太原网站建设培训班
SEO优化攻略:如何通过精准策略提升网站排名与流量,aI ow翻译
AI批量文章工具,让写作变得高效与轻松,cs机器人ai
SEO监控:精准把握网站排名与优化成效的利器,湖南seo排名商家名单
互联网时代的“搜索截流”新玩法:如何抓住流量红利,甘孜做优化网站软件
SEO搜索关键词是什么意思?让你轻松网站流量的秘密!,ai颜色不对
GPT怎么收费?揭秘AI技术的定价与价值,ai报考高考
ChatGPT的诞生,预示着人工智能大规模应用的时代已经来临,ai此生不渝
seo站内链接有什么作用,seo中网站内链的作用 ,781900ai
中文润色:提升表达的艺术,打造无懈可击的语言魅力,广告营销推广新思路论文
ChatGPT破解版:让人工智能助力你的工作与生活,ai cos帽
什么是seo寄生虫,寄生虫seo原理 ,AI 疫