0

0

JavaScript 拖放效果_html/css_WEB-ITnose

php中文网

php中文网

发布时间:2016-06-24 11:53:58

|

1238人浏览过

|

来源于php中文网

原创

拖放效果,也叫拖拽、拖动。一个简单的拖放效果

拖动div

 

【程序说明】

首先初始化函数,对拖放对象添加mousedown监听事件

 initialize:function(drag){        this.Drag = $$(drag);//拖放对象        this._x = this._y = 0;//记录鼠标相对于拖放对象的位置        this._fM = BindAsEventListener(this, this.Move); //绑定拖动时执行的函数        this._fS = Bind(this, this.Stop); //绑定拖动结束执行的函数        this.Drag.style.position = "absolute";        EventUtil.addEventHandler(this.Drag, "mousedown", BindAsEventListener(this, this.Start));           //监听拖动对象mousedown事件 }

之后在Start方法添加mousemove和mouseup事件,分别监听拖放对象的位置和取消监听事件

立即学习Java免费学习笔记(深入)”;

Gatekeep
Gatekeep

Gatekeep AI是一个专注于将文本转化为教学视频的智能教学工具,主要用于数学和物理等学科的教育。

下载

             Start:function(oEvent){                 //记录mousedown触发时鼠标相对于拖放对象的位置                 this._x = oEvent.clientX - this.Drag.offsetLeft;                 this._y = oEvent.clientY - this.Drag.offsetTop;                 //监听mousemove 和 mouseup事件                 EventUtil.addEventHandler(document, "mousemove", this._fM);                 EventUtil.addEventHandler(document, "mouseup", this._fS);             }

 完整拖放程序:

         /**          *拖放程序          */         var simpleDrag = Class.create();         simpleDrag.prototype = {             //初始化对象             initialize:function(drag){                 this.Drag = $$(drag);//拖放对象                 this._x = this._y = 0;//记录鼠标相对于拖放对象的位置                 this._fM = BindAsEventListener(this, this.Move); //绑定拖动时执行的函数                this._fS = Bind(this, this.Stop); //绑定拖动结束执行的函数                this.Drag.style.position = "absolute";                EventUtil.addEventHandler(this.Drag, "mousedown", BindAsEventListener(this, this.Start));                 //监听拖动对象mousedown事件             },             //准备拖动                 Start:function(oEvent){                 //记录mousedown触发时鼠标相对于拖放对象的位置                 this._x = oEvent.clientX - this.Drag.offsetLeft;                this._y = oEvent.clientY - this.Drag.offsetTop;                //监听mousemove 和 mouseup事件                EventUtil.addEventHandler(document, "mousemove", this._fM);                EventUtil.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(){                EventUtil.removeEventHandler(document, "mousemove", this._fM);                EventUtil.removeEventHandler(document, "mouseup", this._fS);             },         };        //初始化拖动         new simpleDrag('drag');

完整DEMO:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>JavaScript拖放效果</title>    <style type="text/css">    *{margin:0;padding:0;}    .drag-wrap{height: 300px;margin:10px;border:5px solid #FF8000;background:#8080C0;position: relative;}    .draggable{width: 100px;height: 100px;position: absolute;top: 100px;left:100px;background:#eee;border:1px solid #aceaac;cursor: move;}    </style></head><body>    <div class="drag-wrap">         <div class="draggable" id="drag">拖动div</div>    </div>    <div class="drag-status" id="drag-status" style="height:30px;padding:0 10px;"></div>    <script type="text/javascript">        /**          *工具函数          */         var isIE = (document.all) ? true : false ;         var $$ = function(id){             return "string" == typeof id ? document.getElementById(id) : id;          };         var Class = {            create: function() {                return function() { this.initialize.apply(this, arguments); }            }        };        var Extend = function(destination,source){            for(var property in source){                destination[property] = source[property];            }        };        var BindAsEventListener = function(object,func){            return function(event){                return func.call(object,event || window.event);            }        };        var Bind = function(object,func){            return function(){                return func.apply(object,arguments);            }        };         /**          *跨浏览器事件对象          */        var EventUtil = {            //事件注册处理程序            addEventHandler:function(oTarget,sEventType,fnHandler){                 if(oTarget.addEventListener){                     oTarget.addEventListener(sEventType,fnHandler,false);                 }else if(oTarget.attachEvent){                     oTarget.attachEvent("on"+sEventType,fnHandler);                 }else{                     oTarget["on"+sEventType] = fnHandler;                 }             },             //事件移除处理程序             removeEventHandler:function(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;                 }             },             getEvent:function(event){                 return event ? event : window.event ;             },             getTarget:function(event){                 return event.target || event.srcElement;             }        };            /**          *拖放程序         */         var simpleDrag = Class.create();         simpleDrag.prototype = {             //初始化对象             initialize:function(drag){                 this.Drag = $$(drag);//拖放对象                 this._x = this._y = 0;//记录鼠标相对于拖放对象的位置                 this._fM = BindAsEventListener(this, this.Move); //绑定拖动时执行的函数                this._fS = Bind(this, this.Stop); //绑定拖动结束执行的函数                this.Drag.style.position = "absolute";                EventUtil.addEventHandler(this.Drag, "mousedown", BindAsEventListener(this, this.Start));                 //监听拖动对象mousedown事件             },             //准备拖动                 Start:function(oEvent){                 //记录mousedown触发时鼠标相对于拖放对象的位置                 this._x = oEvent.clientX - this.Drag.offsetLeft;                this._y = oEvent.clientY - this.Drag.offsetTop;                //监听mousemove 和 mouseup事件                EventUtil.addEventHandler(document, "mousemove", this._fM);                EventUtil.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(){                EventUtil.removeEventHandler(document, "mousemove", this._fM);                EventUtil.removeEventHandler(document, "mouseup", this._fS);             },         };        //初始化拖动         new simpleDrag('drag');    </script></body></html>

 

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
batoto漫画官网入口与网页版访问指南
batoto漫画官网入口与网页版访问指南

本专题系统整理batoto漫画官方网站最新可用入口,涵盖最新官网地址、网页版登录页面及防走失访问方式说明,帮助用户快速找到batoto漫画官方平台,稳定在线阅读各类漫画内容。

65

2026.02.25

Steam官网正版入口与注册登录指南_新手快速进入游戏平台方法
Steam官网正版入口与注册登录指南_新手快速进入游戏平台方法

本专题系统整理Steam官网最新可用入口,涵盖网页版登录地址、新用户注册流程、账号登录方法及官方游戏商店访问说明,帮助新手玩家快速进入Steam平台,完成注册登录并管理个人游戏库。

6

2026.02.25

TypeScript全栈项目架构与接口规范设计
TypeScript全栈项目架构与接口规范设计

本专题面向全栈开发者,系统讲解基于 TypeScript 构建前后端统一技术栈的工程化实践。内容涵盖项目分层设计、接口协议规范、类型共享机制、错误码体系设计、接口自动化生成与文档维护方案。通过完整项目示例,帮助开发者构建结构清晰、类型安全、易维护的现代全栈应用架构。

9

2026.02.25

Python数据处理流水线与ETL工程实战
Python数据处理流水线与ETL工程实战

本专题聚焦 Python 在数据工程场景下的实际应用,系统讲解 ETL 流程设计、数据抽取与清洗、批处理与增量处理方案,以及数据质量校验与异常处理机制。通过构建完整的数据处理流水线案例,帮助开发者掌握数据工程中的性能优化思路与工程化规范,为后续数据分析与机器学习提供稳定可靠的数据基础。

0

2026.02.25

Java领域驱动设计(DDD)与复杂业务建模实战
Java领域驱动设计(DDD)与复杂业务建模实战

本专题围绕 Java 在复杂业务系统中的建模与架构设计展开,深入讲解领域驱动设计(DDD)的核心思想与落地实践。内容涵盖领域划分、聚合根设计、限界上下文、领域事件、贫血模型与充血模型对比,并结合实际业务案例,讲解如何在 Spring 体系中实现可演进的领域模型架构,帮助开发者应对复杂业务带来的系统演化挑战。

0

2026.02.25

Golang 生态工具与框架:扩展开发能力
Golang 生态工具与框架:扩展开发能力

《Golang 生态工具与框架》系统梳理 Go 语言在实际工程中的主流工具链与框架选型思路,涵盖 Web 框架、RPC 通信、依赖管理、测试工具、代码生成与项目结构设计等内容。通过真实项目场景解析不同工具的适用边界与组合方式,帮助开发者构建高效、可维护的 Go 工程体系,并提升团队协作与交付效率。

18

2026.02.24

Golang 性能优化专题:提升应用效率
Golang 性能优化专题:提升应用效率

《Golang 性能优化专题》聚焦 Go 应用在高并发与大规模服务中的性能问题,从 profiling、内存分配、Goroutine 调度、GC 机制到 I/O 与锁竞争逐层分析。结合真实案例讲解定位瓶颈的方法与优化策略,帮助开发者建立系统化性能调优思维,在保证代码可维护性的同时显著提升服务吞吐与稳定性。

9

2026.02.24

Golang 面试题精选:高频问题与解答
Golang 面试题精选:高频问题与解答

Golang 面试题精选》系统整理企业常见 Go 技术面试问题,覆盖语言基础、并发模型、内存与调度机制、网络编程、工程实践与性能优化等核心知识点。每道题不仅给出答案,还拆解背后的设计原理与考察思路,帮助读者建立完整知识结构,在面试与实际开发中都能更从容应对复杂问题。

6

2026.02.24

Golang 运行与部署实战:从本地到云端
Golang 运行与部署实战:从本地到云端

《Golang 运行与部署实战》围绕 Go 应用从开发完成到稳定上线的完整流程展开,系统讲解编译构建、环境配置、日志与配置管理、容器化部署以及常见运维问题处理。结合真实项目场景,拆解自动化构建与持续部署思路,帮助开发者建立可靠的发布流程,提升服务稳定性与可维护性。

5

2026.02.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
JavaScript从入门到精通(完整版)
JavaScript从入门到精通(完整版)

共104课时 | 29.1万人学习

CSS3实现按钮特效视频教程
CSS3实现按钮特效视频教程

共15课时 | 3.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号