元素的移动

我的想法:

1.首先给移动的元素一个绝对定位,position: absolute, 通过top和left来实现元素的移动。

2. 基本过程:(1)当鼠标的左键按下去时,给元素添加onmousemove, onmouseleave(鼠标不在元素上时, 移除onmousemove事件),

          onmouseup(一个移动的完整操作)事件,并触发该元素的 onmousemove 事件。

      (2) 记录鼠标的移动前和移动后的水平和垂直位置,他们的差值就是元素在水平和垂直的移动距离 ,再减去鼠标在移动元素上的相对的水平和垂直位置

          ,最后得到元素移动的目的地(位置)。

  1 <!DOCTYPE html>
  2 <html>
  3 
  4 <head>
  5 
  6 <meta charset="UTF-8">
  7 
  8 <title></title>
  9 
 10 <style>
 11 
 12 *{
 13 
 14 padding: 0px;
 15 
 16 margin: 0px;
 17 
 18 }
 19 
 20 body{
 21 
 22 width: 100%;
 23 
 24 height: 100%;
 25 
 26 background-color: #204D74;
 27 
 28 }
 29 
 30 div{
 31 
 32 position: absolute;
 33 
 34 width: 400px;
 35 
 36 height: 100px;
 37 
 38 background-color: #008000;
 39 
 40 cursor: pointer;
 41 
 42 }
 43 
 44 </style>
 45 
 46 </head>
 47 
 48 <body>
 49 
 50 <div οnmοusedοwn="startDrop(event)"></div>
 51 
 52 </body>
 53 
 54 <script>
 55 
 56 var mouseCurrentX;
 57 
 58 var mouseCurrentY;
 59 
 60 var moveX = 0;
 61 
 62 var moveY = 0;
 63 
 64 function startDrop(e) {
 65 
 66 mouseCurrentX = e.clientX;
 67 
 68 mouseCurrentY = e.clientY;
 69 
 70 console.log('开始拖动');
 71 
 72 if (e.target.addEventListener) {
 73 
 74 e.target.addEventListener('mousemove', mouseMove, false);
 75 
 76 e.target.addEventListener('mouseup', stopMove, false);
 77 
 78 e.target.addEventListener('mouseleave', stopMove, false);
 79 
 80 }else if (attachEvent){
 81 
 82 e.target.attachEvent('onmousemove', mouseMove, false);
 83 
 84 e.target.attachEvent('onmouseup', stopMove, false);
 85 
 86 }
 87 
 88 }
 89 
 90 function mouseMove(e) {
 91 
 92 console.log('正在移动');
 93 
 94 moveX = e.clientX - mouseCurrentX;
 95 
 96 moveY = e.clientY - mouseCurrentY;
 97 
 98 var x = e.clientX - e.offsetX + moveX;
 99 
100 var y = e.clientY - e.offsetY + moveY;
101 
102 e.target.style.top = y + 'px';
103 
104 e.target.style.left = x + 'px';
105 
106 mouseCurrentX = e.clientX;
107 
108 mouseCurrentY = e.clientY;
109 
110 console.log('元素当前的坐标为: ' + x + ',' + y);
111 
112 }
113 
114 function stopMove(e){
115 
116 console.log('结束移动');
117 
118 e.target.removeEventListener('mousemove', mouseMove);
119 
120 }
121 
122 </script>
123 
124 </html>

 

 

 ***********************************************************

 2018-08-10

但感觉还有写小毛病,欢迎指点(致电) 。

转载于:https://www.cnblogs.com/hello-dummy/p/9454809.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427202.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python打开csv文件、计算总成绩_实现读取csv文件,文件里面是有限个百分数成绩(99.6、76.8等等...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼实现读取csv文件&#xff0c;文件里面是有限个百分数成绩(99.6、76.8等等)导出GPA 和等级代码是这样&#xff0c;但是报错了&#xff0c;在score float(sc)这行就报错了&#xff0c;下面有没有错误还不知道&#xff0c;大佬能帮看…

json java typeof_Json对象与Json字符串的转化、JSON字符串与Java对象的转换

一.Json对象与Json字符串的转化1.jQuery插件支持的转换方式&#xff1a;$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象2.浏览器支持的转换方式(Firefox&#xff0c;chrome&#xff0c;opera&#xff0c;safari&#xff0c;ie9&#xff…

Fiddler 学习笔记---命令、断点

输入命令框&#xff1a; 1 输入 &#xff1f;51testing 高亮显示对应记录 2 >10 选择body大于10的记录 3 <10 选择body<10的记录 4 200 选择result200的记录行 5 www.51testing.com 选择host包含www.51testing.com的记录 6 select image 选择 content-type 包含image…

docker Registry镜像仓库

docker search whalesay搜索 2docker pull docker/whalesay 拉取镜像 3docker ps 4docker run docker/whalesay cowsay Docker不错 5docker tag docker/whalesay xibeifeng/whalesay docker images 6登录hub官网 可以 docker push xibeifeng/whalesay上传咯

java中的集合框架_JAVA中的集合框架(上)List

第一节 JAVA中的集合框架概述集合的概念&#xff0c;现实生活中&#xff1a;很多事物凑在一起就是一个集合&#xff1b;数学中的集合&#xff1a;具有相同属性事物的总体&#xff1b;JAVA中的集合&#xff1a;是一种工具类&#xff0c;就像是容器&#xff0c;储存任意数量的具有…

【接口时序】2、Verilog实现流水灯及与C语言的对比

一、 软件平台与硬件平台 软件平台&#xff1a; 1、操作系统&#xff1a;Windows-8.1 2、开发套件&#xff1a;ISE14.7 3、仿真工具&#xff1a;ModelSim-10.4-SE 硬件平台&#xff1a; 1、FPGA型号&#xff1a;XC6SLX45-2CSG324 二、 原理介绍 我的开发板上有4个LED灯&#xf…

python中文编程教学_中谷python中文视频教程(全38集)

python在线教学视频教程共40节&#xff0c;中谷教育录制&#xff0c;主要介绍了python编程方面的知识。python在线教学-01-走进pythonpython在线教学-02-开始编程吧python在线教学-03-变量python在线教学-04-运算符-表达式python在线教学-05-数据类型-数字-字符串python在线教学…

java 异步socket_java Socket读写异步分离

在Android开发中&#xff0c;基于Socket的通信必须是非阻塞式的&#xff0c;因此需要Reader和Writer异步分离&#xff0c;此外需要监听Socket网络状态、监听接口package com.io.sockets;import java.io.IOException;import java.net.Socket;public interface SocketStatusListe…

windows下安装mysql服务

1.下载 首先上MySql的官网下载 https://dev.mysql.com/downloads/mysql/ &#xff0c;本人下载的是 mysql-5.7.24-winx64.zip版。 2.解压存放目录 下载完解压到你想要存放的位置 我的是解压到D:\Program Files\MySQL 。 3.配置环境变量 在环境变量path中追加一句&#xff1a;;D…

web.xml 配置文件 超详细说明!!!

一、web.xml是什么&#xff1f; 首先 web.xml 是java web 项目的一个重要的配置文件&#xff0c;但是web.xml文件并不是Java web工程必须的。 web.xml文件是用来配置&#xff1a;欢迎页、servlet、filter等的。当你的web工程没用到这些时&#xff0c;你可以不用web.xml文件来配…

python条件表达式三门课至少有一门及格_Python/ MySQL练习题(一)

Python/ MySQL练习题(一)2、查询“生物”课程比“物理”课程成绩高的所有学生的学号1 SELECT2 *3 FROM4 (5 SELECT6 *7 FROM8 course9 LEFT JOIN score ON score.course_id course.cid10 WHERE11 course.cname ‘生物‘12 ) AS A13 INNER JOIN (14 SELECT15 *16 FROM17 course…

window上安装mysql服务核心版(亲测可用)

上次安装服务启动后&#xff0c;这次又准备重新安装&#xff0c;出现了了很多问题 1首先我们还是去官网下载对应的window安装包 2放置在D:\Program Files\mysql下面&#xff0c;没有则新建一个Program Files 3在同路径下E:\Program Files\mysql建立一个my.ini文件 [mysql] 设置…

java添加信息_java – 向异常添加信息

我想向堆栈跟踪/异常添加信息.基本上我现在有这样的东西,我真的很喜欢&#xff1a;Exception in thread "main" java.lang.ArithmeticException: / by zeroat com.so.main(SO.java:41)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect…

python封装模块_Python练手,封装日志模块,v2

前面第1版写好后&#xff0c;很凌乱&#xff0c;主要的问题在于&#xff0c;Python不支持方法重载&#xff0c;想要灵活创建对象&#xff0c;当时的变通办法是&#xff0c;先链式地有选择地设置属性(方法重载的本质就是有选择地设置属性)&#xff0c;再做实例化&#xff0c;这样…

发现了拯救“文献多的一团麻”的工具

Endnotes是一款好的文献管理工具; 可用以收集文献&#xff1b;整理在引用文献时的不知所踪(提前在reference中细化标题)&#xff1b;还有一些在阅读文献时 转瞬即逝的灵感(notes); 使用笔记来自&#xff1a;感谢其悉心编写。 http://blog.sciencenet.cn/blog-484734-367968.htm…

windows安装apache

1打开apache官网http://httpd.apache.org/ 下载win版本 2解压放入D盘D:\Apache24 3修改http.conf,安装路径 端口改成8080&#xff0c;避免占用&#xff0c;原先是80 4http -t检查配置文件合法 5httpd -k install -n apache安装主服务 6net start apache

java语言中的标识符_Java语言基本语法(一)————关键字标识符(Java语言标识符命名规范Java语言的包名、类名、接口名、变量名、函数名、常量名命名规则 )...

一、关键字关键字的定义和特点定义&#xff1a;被Java语言赋予特殊含义&#xff0c;用做专门用途的字符串(单词)。特点&#xff1a;关键字中所有字母均为小写下面列举一些常用的关键字。用于定义数据类型的关键字&#xff1a;byte、short、int、long、float、double、char、boo…

数组的合并和升序排列_leetcode No.31 下一个排列

题目链接&#xff1a;下一个排列 - 力扣&#xff08;LeetCode&#xff09;​leetcode-cn.com题目描述&#xff1a;实现获取下一个排列的函数&#xff0c;算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列&#xff0c;则将数字重新排列成…

公司网络故障那些事(路由器变交换机)

首先这次网络故障是断电引起的 我给大家画个模型 三层的为八口交换机 一层的为五口打印机 笔记本代表两台无线打印机 首先八口的连接了公司采购电脑一台&#xff0c;业务电脑一台&#xff0c;其他电脑三台 第二个五口交换的连接财务电脑两台 最后一个五口交换机连接两台无线打印…

【原创】大公司为什么还在采用过时的技术

背景 本文出自一朋友给我的提问&#xff0c;于是博主呕心沥血给他花式洗脑了几个小时。忽然发现&#xff0c;应该还有许多朋友有同样的疑问。所以整理成文。 许多刚毕业的程序员朋友&#xff0c;都有一个执念&#xff0c;想要进那种规模大一点的公司、上市的、业内有名的最好。…