e.offsetX是鼠标距离准确事件源的左上角距离
e.clientX是鼠标距离浏览器可视窗口左上角的距离
e.pageX是鼠标距离文档左上角的距离
/*
当鼠标点击div时开始挪动,当鼠标抬起,div静止------事件源是div
当鼠标点击后,鼠标在移动------事件源是document
事件类型------鼠标事件
事件处理函数------要做的式是改变div的位置
*/
javascript<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; } div { width: 200px; height: 200px; background-color: pink; position: absolute; left: 0; top: 0; } </style> </head> <body> <div> </div> <script> var box = document.querySelector('div') var startX=0 //记录鼠标初始距离div的X位置 var startY=0 var flag = false //当点击div时移动div位置,否则不移动 box.onmousedown = function (e) { startX = e.offsetX startY = e.offsetY flag = true } document.addEventListener('mousemove', function (e) { if (flag == false) { return } x = e.clientX - startX; y = e.clientY - startY; if (x <= 0) { x = 0; } if (y <= 0) { y = 0; } box.style.left = x + "px"; box.style.top = y + "px"; }) box.onmouseup = function (e) { flag = false //当抬起鼠标不移动 // console.log('鼠标抬起的位置', e.offsetX, e.offsetY) } </script> </body> </html>
优化:
x最大值应该是:
27.js实现鼠标拖拽
Deng.9942024-07-17 12:38
相关推荐
懒大王爱吃狼22 分钟前
Python教程:python枚举类定义和使用待磨的钝刨1 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看逐·風4 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发Devil枫5 小时前
Vue 3 单元测试与E2E测试尚梦5 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)GIS程序媛—椰子6 小时前
【Vue 全家桶】6、vue-router 路由(更新中)前端青山6 小时前
Node.js-增强 API 安全性和性能优化毕业设计制作和分享7 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue从兄7 小时前
vue 使用docx-preview 预览替换文档内的特定变量清灵xmf9 小时前
在 Vue 中实现与优化轮询技术