JS实现的简易拖放效果示例
发布时间 - 2026-01-10 22:12:07 点击率:次本文实例讲述了JS实现的简易拖放效果。分享给大家供大家参考,具体如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>简易拖放效果</title>
</head>
<body>
<script type="text/JavaScript">
<!--
var isIE = (document.all) ? true : false;// 是否ie
var $ = function (id) {
//返回id对象
return "string" == typeof id ? document.getElementById(id) : id;
};
var Class = {
// 带构造方法的类
create: function() {
return function() { this.initialize.apply(this, arguments); } //用apply应用下面的initialize初始化属性
}
}
var Extend = function(destination, source) {
//继承
for (var property in source) {
destination[property] = source[property];
}
}
var Bind = function(object, fun) {
return function() {
return fun.apply(object, arguments);
}
}
/**
用object对象调用fun参数是event||window event
**/
var BindAsEventListener = function(object, fun) {
return function(event) {
return fun.call(object, (event || window.event));
}
}
/**
添加帧听器事件
@oTarget 目标对象
@sEventType 事件类型
@fnHandler 目标触发事件对象
**/
function addEventHandler(oTarget, sEventType, fnHandler) {
if (oTarget.addEventListener) {
oTarget.addEventListener(sEventType, fnHandler, false);//firefox
} else if (oTarget.attachEvent) {
oTarget.attachEvent("on" + sEventType, fnHandler);//ie
} else {
oTarget["on" + sEventType] = fnHandler;//other
}
};
/**
清除添加的帧听器事件
@oTarget 目标对象
@sEventType 事件类型
@fnHandler 目标触发事件对象
**/
function removeEventHandler(oTarget, sEventType, fnHandler) {
if (oTarget.removeEventListener) {
oTarget.removeEventListener(sEventType, fnHandler, false);
} else if (oTarget.detachEvent) {
oTarget.detachEvent("on" + sEventType, fnHandler);
} else {
oTarget["on" + sEventType] = null;
}
};
/*------------------------------相关模型构造完毕-----------------------------------*/
//拖放程序
var SimpleDrag = Class.create();
SimpleDrag.prototype = {
//拖放对象,触发对象,初始化
initialize: function(drag) {
this.Drag = $(drag);
this._x = this._y = 0;
this._fM = BindAsEventListener(this, this.Move);//_fM方法就是应用MOVE方法参数是event||window.event
this._fS = Bind(this, this.Stop);//_fS类方法就是Stop方法
this.Drag.style.position = "absolute";
this.Drag.style.cursor = "move";
addEventHandler(this.Drag, "mousedown", BindAsEventListener(this, this.Start));
},
//准备拖动
Start: function(oEvent) {
this._x = oEvent.clientX - this.Drag.offsetLeft;
this._y = oEvent.clientY - this.Drag.offsetTop;
addEventHandler(document, "mousemove", this._fM);
addEventHandler(document, "mouseup", this._fS);
},
//拖动
Move: function(oEvent) {
this.Drag.style.left = oEvent.clientX - this._x + "px";
this.Drag.style.top = oEvent.clientY - this._y + "px";
},
//停止拖动
Stop: function() {
removeEventHandler(document, "mousemove", this._fM);
removeEventHandler(document, "mouseup", this._fS);
}
};
// -->
</script>
<div id="idDrag" style="border:5px solid #0000FF; background:#C4E3FD; width:50px; height:50px;"></div>
<script type="text/javascript">
<!--
new SimpleDrag("idDrag");
// -->
</script>
</body>
</html>
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
# JS
# 拖放效果
# 浅谈js原生拖放
# Vue.js实现拖放效果的实例
# 谈谈对JavaScript原生拖放的深入理解
# javascript实现拖放效果
# JavaScript实现的多种鼠标拖放效果
# JavaScript实现网页对象拖放功能的方法
# javascript 拖放效果实现代码
# JavaScript 拖放效果代码
# Javascript拖拽&拖放系列文章3之细说事件对象
# JavaScript 图片放大镜(可拖放、缩放效果)
# 拖放
# 拖动
# 相关内容
# 遍历
# 感兴趣
# 数据结构
# 给大家
# 更多关于
# 所述
# 程序设计
# 讲述了
# body
# title
# script
# var
# JavaScript
# type
# charset
# equiv
# meta
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
焦点电影公司作品,电影焦点结局是什么?
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
Swift中switch语句区间和元组模式匹配
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
如何在橙子建站中快速调整背景颜色?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Laravel如何自定义错误页面(404, 500)?(代码示例)
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
如何在万网自助建站中设置域名及备案?
如何快速搭建个人网站并优化SEO?
绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信
想要更高端的建设网站,这些原则一定要坚持!
Laravel如何处理表单验证?(Requests代码示例)
nodejs redis 发布订阅机制封装实现方法及实例代码
Bootstrap CSS布局之列表
Laravel集合Collection怎么用_Laravel集合常用函数详解
开心动漫网站制作软件下载,十分开心动画为何停播?
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
使用豆包 AI 辅助进行简单网页 HTML 结构设计
中山网站推广排名,中山信息港登录入口?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
JavaScript常见的五种数组去重的方式
Laravel如何实现文件上传和存储?(本地与S3配置)
英语简历制作免费网站推荐,如何将简历翻译成英文?
Laravel Docker环境搭建教程_Laravel Sail使用指南
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
公司门户网站制作流程,华为官网怎么做?
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Android使用GridView实现日历的简单功能
长沙企业网站制作哪家好,长沙水业集团官方网站?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
Android GridView 滑动条设置一直显示状态(推荐)
高端智能建站公司优选:品牌定制与SEO优化一站式服务
详解阿里云nginx服务器多站点的配置
如何获取上海专业网站定制建站电话?
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
高防网站服务器:DDoS防御与BGP线路的AI智能防护方案
如何在 React 中条件性地遍历数组并渲染元素
佛山网站制作系统,佛山企业变更地址网上办理步骤?
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】

