实现拖拽功能的实战示例

server/2024/9/25 23:19:21/

以下是一个简单的用JavaScript实现拖拽功能的示例:

HTML代码:

<!DOCTYPE html>
<html>
<head><title>拖拽示例</title><style>#draggable {width: 100px;height: 100px;background-color: red;position: absolute;top: 0;left: 0;}</style>
</head>
<body><div id="draggable"></div><script src="drag.js"></script>
</body>
</html>

JavaScript代码(drag.js):

javascript">var draggable = document.getElementById('draggable');var isDragging = false;
var mouseOffset = { x: 0, y: 0 };draggable.addEventListener('mousedown', function(e) {isDragging = true;// 计算鼠标位置和可拖拽元素左上角的偏移量mouseOffset.x = e.clientX - draggable.offsetLeft;mouseOffset.y = e.clientY - draggable.offsetTop;
});document.addEventListener('mousemove', function(e) {if (isDragging) {// 根据鼠标位置和偏移量计算拖拽元素的新位置var newX = e.clientX - mouseOffset.x;var newY = e.clientY - mouseOffset.y;// 更新拖拽元素的位置draggable.style.left = newX + 'px';draggable.style.top = newY + 'px';}
});document.addEventListener('mouseup', function(e) {isDragging = false;
});

这个示例创建了一个红色的可拖拽元素,当鼠标在元素上按下时,元素会跟随鼠标移动,直到释放鼠标按键。

在这个示例中,我们使用了mousedownmousemovemouseup事件来实现拖拽功能。mousedown事件表示鼠标按下时,mousemove事件表示鼠标移动时,mouseup事件表示鼠标释放时。我们监听这些事件,并在合适的时候更新可拖拽元素的位置。使用offsetLeftoffsetTop属性可以获取可拖拽元素相对于其父元素的偏移量,使用style.leftstyle.top属性可以更新元素的位置。

值得注意的是,我们使用了一个isDragging变量来记录是否正在拖拽,以及一个mouseOffset变量来记录鼠标位置和元素偏移量的差值。这样可以确保元素总是跟随鼠标移动,而不是立即跳到鼠标位置。


http://www.ppmy.cn/server/36042.html

相关文章

Java全栈开发前端+后端(全栈工程师进阶之路)-环境搭建

在课程开始前我们要配置好我们的开发环境&#xff0c;这里我的电脑太乱了&#xff0c;我使用vm虚拟机进行搭建开发环境&#xff0c;如果有需要环境的或者安装包&#xff0c;可以私信我。 那我们开始 首先我们安装数据库 这里我们使用小皮面板 小皮面板(phpstudy) - 让天下没…

【docker】常用的Docker编排和调度平台

常用的Docker编排和调度平台 Kubernetes (K8s): Kubernetes是目前市场上最流行和功能最全面的容器编排和调度平台。它由Google开发并开源&#xff0c;现由CNCF&#xff08;云原生计算基金会&#xff09;维护。Kubernetes设计用于自动化容器部署、扩展和管理&#xff0c;支持跨…

ABAP开发(5)字符串操作

文章目录 1、CONCATENATE2、SPLIT3、SEARCH4、REPLACE 1、CONCATENATE 使用关键字CONCATENATE可以将多个字符串进行连接&#xff0c;也可以在连接的过程中添加分隔符。 2、SPLIT 3、SEARCH 4、REPLACE

实时音视频通信的主要矛盾及解决方法

实时音视频通信的主要矛盾及解决方法 实时音视频通信的主要矛盾及解决方法实时音视频通信的主要矛盾矛盾的解决方法增加带宽减少数据量适当增加延时提高网络质量快速准确地评估带宽 总结参考 实时音视频通信的主要矛盾及解决方法 实时音视频通信的主要矛盾 实时音视频通信的主…

科技云报道:从亚运到奥运,大型国际赛事共赴“云端”

科技云报道原创。 “广播电视转播技术拯救了奥运会”前奥委会主席萨马兰奇这句话广为流传。 奥运会、世界杯、亚运会这样的全球大型体育赛事不仅是体育竞技的盛宴&#xff0c;也是商业盛宴&#xff0c;还是技术与人文的融合秀。随着科技的进步&#xff0c;技术在体育赛事中扮…

软件设计师-重点的行为型设计模式

一、命令模式&#xff08;Command&#xff09;&#xff1a; 意图&#xff1a;&#xff08;上午题&#xff09; 将一个请求封装为一个对象&#xff0c;从而使得可以用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤销的操作。 结构…

探索中位数快速排序算法:高效寻找数据集的中间值

在计算机科学领域&#xff0c;寻找数据集的中位数是一个常见而重要的问题。而快速排序算法作为一种高效的排序算法&#xff0c;可以被巧妙地利用来解决中位数查找的问题。本文将深入探讨中位数快速排序算法的原理、实现方法以及应用场景&#xff0c;带你领略这一寻找中间值的高…

ES数据存储与查询基本原理

Elasticsearch&#xff08;ES&#xff09;简介 Elasticsearch&#xff08;ES&#xff09;是一个分布式、可扩展、近实时的搜索和分析引擎&#xff0c;它基于Lucene&#xff0c;设计用于云计算中&#xff0c;处理大规模文档检索和数据分析任务&#xff0c;常用于实现内部搜索引…