首页 > 其他分享 >举例说明js拖拽用到的事件有哪些?

举例说明js拖拽用到的事件有哪些?

时间:2025-01-18 09:33:23浏览次数:1  
标签:event js draggable isDragging mousedown 事件 拖拽 举例说明

在JavaScript中,实现拖拽功能通常会用到以下事件:

  1. mousedown:当用户按下鼠标按钮时触发。在拖拽的上下文中,这通常是拖拽操作的起点。你可以在这个事件的处理函数中记录拖拽开始时的鼠标位置,以及设置一些标识来表示拖拽已经开始。
  2. mousemove:当鼠标在元素内部移动时触发。在拖拽过程中,这个事件会频繁触发。你可以在这个事件的处理函数中更新被拖拽元素的位置,使其跟随鼠标移动。
  3. mouseup:当用户释放鼠标按钮时触发。这通常表示拖拽操作的结束。在这个事件的处理函数中,你可以清理在mousedown事件中设置的标识,以及执行其他必要的拖拽结束后的操作。

以下是一个简单的JavaScript拖拽示例,演示了如何使用这些事件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Drag Example</title>
    <style>
        #draggable {
            width: 100px;
            height: 100px;
            background-color: blue;
            position: absolute;
            cursor: move;
        }
    </style>
</head>
<body>
    <div id="draggable"></div>
    <script>
        var draggable = document.getElementById('draggable');
        var isDragging = false;
        var offsetX, offsetY;

        draggable.addEventListener('mousedown', function(event) {
            isDragging = true;
            offsetX = event.clientX - draggable.offsetLeft;
            offsetY = event.clientY - draggable.offsetTop;
        });

        document.addEventListener('mousemove', function(event) {
            if (isDragging) {
                draggable.style.left = (event.clientX - offsetX) + 'px';
                draggable.style.top = (event.clientY - offsetY) + 'px';
            }
        });

        document.addEventListener('mouseup', function() {
            isDragging = false;
        });
    </script>
</body>
</html>

在这个示例中,我们创建了一个可拖拽的<div>元素,并为其添加了mousedownmousemovemouseup事件监听器。在mousedown事件中,我们记录了拖拽开始时的鼠标位置,并设置了isDragging标识。在mousemove事件中,如果isDraggingtrue,我们就更新<div>元素的位置。最后,在mouseup事件中,我们清理了isDragging标识,表示拖拽已经结束。

标签:event,js,draggable,isDragging,mousedown,事件,拖拽,举例说明
From: https://www.cnblogs.com/ai888/p/18678042

相关文章

  • 举例说明如何在页面中添加数学公式?
    在前端开发中,向页面添加数学公式可以通过多种方法实现,以下是一些具体的例子和步骤:使用HTML转义字符:对于简单的数学公式,如“E=mc^2”,可以直接使用HTML转义字符来表示。例如,使用<sup>标签来表示上标:<p>E=mc<sup>2</sup></p>这种方法简单易行,但仅适用于简单的公式。使用Mat......
  • 举例说明在css3中怎么实现背景裁剪?
    在CSS3中,你可以使用background-clip属性来实现背景裁剪。background-clip属性定义背景的绘制区域,也就是说,它决定了背景图像或背景色应该显示到哪个边界为止。这个属性有四个可能的值:border-box、padding-box、content-box和text。下面是一个简单的例子来说明如何使用background-c......
  • 请为什么说js是单线程,而不是多线程呢?
    JavaScript被设计为单线程语言,而不是多线程,主要基于以下几个原因:简化并发问题:单线程模型可以显著简化并发带来的复杂性。在多线程环境中,开发人员需要处理诸如竞态条件、死锁等复杂的同步问题。而JavaScript的单线程设计避免了这些问题,使得代码更加易于理解和维护。避免浏览......
  • node.js毕设工商学院宿舍管理系统论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容选题背景关于高校宿舍管理系统的研究,现有研究主要以满足基本的住宿安排和人员信息管理为主。在国外,一些先进的高校宿舍管理系统已实现高度智能化,涵盖从入住到离校的......
  • ssm455大学心理咨询管理子系统的分析与实现+jsp
    博主介绍:专注于Java(springbootssm等开发框架)vue .net phpphythonnode.js  uniapp微信小程序等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作☆☆☆精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟我的博客空间发布了2000+毕设......
  • threejs 实现镜面反射,只反射指定物体,背景透明
    一、背景最近在做数字孪生项目,使用threejs渲染模型,UI要求地面反射建筑物,也就是模型要有倒影。二、调研在官网找到一个镜面反射的例子(https://threejs.org/examples/?q=refle#webgl_mirror)如图:和UI要的功能类似,但有缺陷1、反射出了地面上所有的元素,连天空盒都反射出来了,我只......
  • JSP蚂蚁户外旅游网站g303g--(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容项目名称:蚂蚁户外旅游网站开发项目背景:随着人们生活水平的提高和休闲方式的多样化,户外旅游逐渐成为大众热衷的休闲活动之一。然而,市场上现有的户......
  • JSP旅游资源及线路管理系统uun71(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景与意义随着旅游业的蓬勃发展,旅游资源的有效管理和线路的优化设计成为提升旅游体验的关键。传统的旅游资源管理方式存在信息更新慢、线......
  • JSP律师咨询信息管理系统y8036(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容项目名称:律师咨询信息管理系统开发项目背景:随着社会法治化进程的推进,公众对法律咨询服务的需求日益增长。传统的律师咨询方式存在信息不透明、咨......
  • Vue.js组件开发-实现后端返回二进制文件在浏览器自动下载
    在Vue.js组件开发中,若需实现从后端获取二进制文件并触发浏览器自动下载,可以利用axios(或其他HTTP客户端库)来向后端发送请求,随后利用Blob对象及URL.createObjectURL方法生成一个可供下载的链接,最后通过创建一个隐藏的<a>元素或利用window.location来启动下载。步骤‌1.发送请求......