当前位置: 首页 > news >正文

鼠标的拖动效果

1、变量的设置
let isDragging = false;
let startX;
let startY;
let endX;
let endY;
let box = null;
  • isDragging : 表示是否推拽
  • startX、startY:表示起始坐标,相对于元素
  • endX、endY:表示结束坐标,相对于元素
  • box:表示要拖动的盒子
2、设置监听事件

设置监听事件,并初始化盒子(box

// 为鼠标按下事件设置监听
titleFile.addEventListener('mousedown', (e) => {box = createFileBox; // 初始化被移动的元素mouseMove(e); // 调用移动鼠标的函数
});
3、移动鼠标
  • 第一次移动
    • 首先判断是否为第一次移动,如果是第一次移动,那末直接让初始的位置为当前鼠标的位置。
    • 然后尝试获取盒子的位置,并初始化。
  • 非第一次移动
    • 将上一次移动的末位置作为当前的初始位置。
function mouseMove(e){isDragging = true;if(startX  === undefined || startY === undefined) {startX = e.clientX;startY = e.clientY;} else {startX = e.clientX - endX;startY = e.clientY - endY;}let ox = box.style.left;let oy = box.style.top;if(ox === '' || ox === null || oy === '' || oy === null) {box.style.left = '0px';box.style.top = '0px';}
}
3、鼠标移动事件

由于要移动的盒子时使用的相对定位,因此导致坐标不一致,鼠标是根据左上角为原点进行定位,而我的是根据初始位置的中间位置进行定位。因此需要将鼠标的坐标转化为盒子所在坐标系的坐标。

// 鼠标移动事件
document.addEventListener('mousemove', (e) => {if (isDragging) {e.preventDefault(); // 阻止默认行为// 计算要移动的距离,即,元素元素要移动的距离endX = e.clientX - startX;endY = e.clientY - startY;box.style.left = `${endX}px`;box.style.top = `${endY}px`;}
});
4、鼠标释放事件
// 鼠标释放事件
document.addEventListener('mouseup', () => {isDragging = false;
});
5、清理鼠标事件
function mouseClear() {startX = undefined;startY = undefined;endX = undefined;endY = undefined;if(box !== null) {box.style.left = '0px';box.style.top = '0px';}box = null;
}

相关文章:

  • coze智能体后端接入问题:
  • 某水表量每15分钟一报,然后某天示数清0了,重新报示值了 ,如何写sql 计算每日水量
  • SQL进阶之旅 Day 19:统计信息与优化器提示
  • django blank 与 null的区别
  • Shell编程核心符号与格式化操作详解
  • Skia如何绘制几何图形
  • 使用xdocreport导出word
  • 【QT常用技术讲解】多线程执行后台命令行的两种方式(后台运行和返回打印信息)
  • API是什么意思?如何实现开放API?
  • 惊艳呈现:探索数据可视化的艺术与科学
  • 嵌入式开发之STM32学习笔记day21
  • 软件功能模块归属论证方法
  • C++中的概念(Concepts)
  • C++.OpenGL (11/64)材质(Materials)
  • Spring Boot 实现流式响应(兼容 2.7.x)
  • 【Redis】哨兵模式
  • 【C语言】统计孪生素数对高效解法
  • vsCode使用本地低版本node启动配置文件
  • 1panel面板中部署SpringBoot和Vue前后端分离系统 【图文教程】
  • 解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
  • 现在做网站怎么赚钱/百度平台客服电话
  • 建网站手机软件/百度seo优化技术
  • 网站建设公司需要icp证/百度一下手机版
  • 南汇整站seo十大排名/武汉整站优化
  • 百度网站建设公司哪家好/国内十大搜索引擎排名
  • 怎么把网站做成软件/推广竞价托管公司