使用js实现的简单拖拽效果
来源: 阅读:1359 次 日期:2015-03-19 14:50:32
温馨提示: 小编为您整理了“使用js实现的简单拖拽效果”,方便广大网友查阅!

本文给大家分享的是使用纯JS实现的简单的拖拽效果的插件,算是对自己javascript学习的一个小的检验,如果小伙伴们需要复杂的拖拽效果,还是考虑jQuery的draggable吧,更成熟一些。

前端开发的时候,有好多地方用到拖拽效果,当然 是个不错的选择,but 我是个打破砂锅问到底的人,抽点时间用js小小的实现了类似的插件,话不多说。

 first: html和css

代码如下:

Baidu
map

使用js实现的简单拖拽效果 三联

now,先把主要算法实现一下:

代码如下:

yeah,使用面向对象实现一下

代码如下:

js Draggle class:

代码如下:

function Drag(id) {

this.div = document.getElementById(id);

if (this.div) {

this.div.style.cursor = "move";

this.div.style.position = "absolute";

}

this.disX = 0;

this.disY = 0;

var _this = this;

this.div.onmousedown = function (evt) {

_this.getDistance(evt);

document.onmousemove = function (evt) {

_this.setPosition(evt);

}

_this.div.onmouseup = function () {

_this.clearEvent();

}

}

}

Drag.prototype.getDistance = function (evt) {

var oEvent = evt || event;

this.disX = oEvent.clientX - this.div.offsetLeft;

this.disY = oEvent.clientY - this.div.offsetTop;

}

Drag.prototype.setPosition = function (evt) {

var oEvent = evt || event;

var l = oEvent.clientX - this.disX;

var t = oEvent.clientY - this.disY;

if (l <= 0) {

l = 0;

}

else if (l >= document.documentElement.clientWidth - this.div.offsetWidth) {

l = document.documentElement.clientWidth - this.div.offsetWidth;

}

if (t <= 0) {

t = 0;

}

else if (t >= document.documentElement.clientHeight - this.div.offsetHeight) {

t = document.documentElement.clientHeight - this.div.offsetHeight;

}

this.div.style.left = l + "px";

this.div.style.top = t + "px";

}

Drag.prototype.clearEvent = function () {

this.div.onmouseup = null;

document.onmousemove = null;

}

at last:最终实现:

代码如下:

window.onload = function () {

new Drag("div1");

new Drag("div2");

}

效果如下:

以上所述就是本文的全部内容了,希望能对大家更加熟练的掌握javascript有所帮助。

更多信息请查看IT技术专栏

更多信息请查看 脚本栏目
手机网站地址: 使用js实现的简单拖拽效果
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2026上岸·考公考编培训报班

  • 报班类型
  • 姓名
  • 手机号
关于我们| 联系我们| 人才招聘| 网站声明| 网站帮助| 非正式的简要咨询| 简要咨询须知| 新媒体/短视频平台| 手机站点| 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65099533/13759567129 获取招聘考试信息及咨询关注公众号:
咨询QQ:1093837350(9:00—18:00) 版权所有:
云南网警报警专用图标
Baidu
map