问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

javascript写的mousedown、mousemove、mouseup组合定义的拖动事件在手...

发布网友 发布时间:2022-04-26 15:15

我来回答

5个回答

懂视网 时间:2022-05-16 03:23

javascript简单拖拽

简单拖拽实现

1623.png

mousedown 的时候创建拖动对象,mouseup的时候释放对象,原理弄清楚了其实很简单。

简单拖拽实现代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>简单拖拽实现</title>
<style type="text/css">
*{margin:0;padding:0;}
#box{ margin:20px auto; position:relative; width:400px; height:400px; background:#ccc; border:1px solid #333; postion:relative; }
#dragBox{ width:50px; height:50px; text-align:center; line-height: 50px;position: absolute; background:blue; cursor:move; font-size:12px; color:#fff;}
</style> 
</head>
<body>
<div id="box">
 <div id="dragBox">拖我</div>
</div>
<script type="text/javascript">
var VVG = {}; //命名空间
VVG.DOM = {
 $: function(id) { //创建方便的选择符
 return typeof id == "string" ? document.getElementById(id) : id;
 },
 bindEvent: function(node, type, func) { //事件绑定方法
 if (node.addEventListener) {
  node.addEventListener(type, func, false);
 } else if (node.attachEvent) {
  node.attachEvent("on" + type, func);
 } else {
  node["on" + type] = func;
 }
 },
 getEvent: function(event) { //获取事件
 return event ? event : window.event;
 },
 getTarget: function(event) { //获取事件目标
 return event.target || event.srcElement;
 }
}
 var DragDrop = function() { //新建一个返回对象的函数
 var box = VVG.DOM.$("box"); //获取外围BOX
 var dragBox = VVG.DOM.$("dragBox");//获取需要拖动的BOX
 var dragging = null; //初始化对象
 function drag(event) { //事件执行函数
  event = VVG.DOM.getEvent(event); 
  var target = VVG.DOM.getTarget(event);
  switch (event.type) {//判断事件类型
  case "mousedown":
  if(target.id == "dragBox"){ //当事件对象的ID等于要拖动的BOX的ID时
   dragging = target; //赋值到拖动目标
  }
  break;
  case "mousemove":
  if(dragging){ //当有拖动目标时执行
   sTop = document.documentElement.scrollTop || document.body.scrollTop; //当有滚动条的时候卷去页面的高度
   dragging.style.left = (event.clientX - box.offsetLeft - dragBox.offsetWidth/2) + "px";
   dragging.style.top = (event.clientY + sTop - box.offsetTop - dragBox.offsetHeight/2 ) + "px";
   var left = parseInt(dragging.style.left);
   var top = parseInt(dragging.style.top);
   //console.log("left:"+left+"-----top:"+top + "-------sTop:"+sTop);
   // 比较坐标是否超出外围的BOX
   if(left < 0){
   dragging.style.left = 0 +"px";
   }
   if(top < 0){
   dragging.style.top = 0+"px";
   }
   if(left > box.offsetWidth - dragBox.offsetWidth){
   dragging.style.left = (box.offsetWidth - dragBox.offsetWidth - 2 )+"px";
   }
   if(top > box.offsetHeight - dragBox.offsetHeight){
   dragging.style.top =( box.offsetHeight - dragBox.offsetHeight - 2 )+"px";
   }
  }
  break;
  case "mouseup":
  // 清空拖动目标
  dragging = null;
  break;
  }
 };
 return {
  dragStart: function() {
  // 绑定事件
  VVG.DOM.bindEvent(document, "mousedown", drag);
  VVG.DOM.bindEvent(document, "mousemove", drag);
  VVG.DOM.bindEvent(document, "mouseup", drag);
  }
 }
 }();
 DragDrop.dragStart();
</script>
</body>
</html>

热心网友 时间:2022-05-16 00:31

可以使用像Hammer.js这样的框架

热心网友 时间:2022-05-16 01:49

手机上用 touchstart,touchmove,touchend

热心网友 时间:2022-05-16 03:24

mouse是鼠标的,touch才行,在手机上用touch

热心网友 时间:2022-05-16 07:23

可以使用touchstart、touchend、touchmove代替,具体怎么使用可以自己查一下
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 对web前端程序员来说 最重要的是哪个技术 javascript中什么时候用到document.ommousemove js mousemove 时间 ,为什么mousemove不能全部触发,如下面代码,我想通过m... 在js中mousemove后mouseup不执行怎么解决 js mousemove()判断鼠标是否移动,keydown()判断键盘是否被按下,10分钟... js mousemove 的疑问 分离久了想念的句子 深夜思念爱人的句子 思念牵挂一个人的句子说说心情 很思念一个人的说说心情 相思的夜的唯美句子 深夜无法入睡想念爱人的句子有哪些? 深夜想念一个人的暖心说说怎么写? 打印机可以自己修吗? 木瓜酸的做法,木瓜酸怎么做好吃,木瓜酸的家常做法 木瓜酸怎么淹? 美的电热水器f60-15wa1怎么排污 木瓜酸的做法 请专家告诉我美的F50-21B1热水器怎么排污 广西木瓜酸的做法 如何防止鼠标移出移入子元素触发mouseout和mouseover事件 想学习Web前端开发,这三点你了解吗? javascript如何让表格可以拖动改变列宽度的原理? javascript 怎么鼠标停留在表格的某个单元格上,获得该单元格的值_百度... javascript: window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);啥... Javascript代码中此处return false的作用 JavaScript onmousemove 事件 javascript 使用onMouseDown和onMouseUp来统计我按了多久, 为什么无法达... javascript的关于onmousemove=fun;表示只要鼠标移动一直触发函数,那么... JavaScript的div拖拽,用构造函数,在鼠标移动太快时会使onmousemove失效... 在javascript中如何获得onMouseMove事件停止的状态? canvas 用js怎么做的橡皮檫的效果 如何用JS动态创建层 一般银行审批贷款需要多久?我们的从去年十二月就到银行走程序了,一直到现在也没批下来,该怎么办 闲鱼恶意拍下不付款,我关闭交易,她就一直拍,真烦人 足球简笔画有哪些画法? 足球简笔画怎么画最简单的 求教:我是一个足球守门员(新人),总是不知道怎么做!! 足球守门员接凌空球技巧 业余足球守门员,教你如何开大脚球练习方法