运用js实现图层拖拽的功能


Posted in Javascript onMay 24, 2019

1.需求分析:设计一个元素,可以跟随鼠标的移动,元素也进行移动,并且能够在鼠标按上与按下元素的时候,元素同样可以进行改变样式颜色。

2. 设计思路:先是需要获取元素,给元素绑定鼠标按下的事件,在绑定的事件中,兼容event事件,获取鼠标的坐标和元素的坐标,通过鼠标的坐标减去元素的坐标就可以得到鼠标在元素中的坐标。在绑定事件中,写上一个元素的移动事件,获取元素的移动坐标。最后,在鼠标按上的事件函数中,可以调用元素的移动事件就可以了。

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>图层拖拽</title>
 <style>
 .box {
 width: 200px;
 height: 200px;
 background-color: skyblue;
 border: 2px solid #ccc;
 cursor: pointer;
 position: absolute;
 top: 20px;
 left: 100px;
 }
 </style>
</head>
<body>
<div class="box" id="box"></div>
</body>
<script>
 var box = document.getElementById("box");
 box.onmousedown = function(env){
 // 兼容event事件
 var env = env || window.event;
 // 获取鼠标的坐标
 var x = env.clientX;
 var y = env.clientY;
 // 获取元素的坐标
 var left = box.offsetLeft;
 var top = box.offsetTop;
 // 获取鼠标在元素中的坐标
 var x_left = x - left;
 var y_top = y -top;
 // 鼠标点击后改变颜色
 box.style.background = "red";
 // 元素的移动事件函数
 box.onmousemove = function(env){
 // 兼容event事件
 var env = env || window.event;
 // 获取元素移动时的鼠标的坐标
 var x = env.clientX;
 var y = env.clientY;
 // 元素的移动坐标
 box.style.left = (x - x_left)+"px";
 box.style.top = (y - y_top)+"px";
 }
 };
 // 鼠标弹出的事件函数
 box.onmouseup = function(){
 box.style.background = "skyblue";
 // 在鼠标弹出后再次调用元素的鼠标移动事件
 box.onmousemove = function(){};

 };
</script>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
Nov 14 Javascript
js对图片base64编码字符串进行解码并输出图像示例
Mar 17 Javascript
字段太多jquey快速清空表单内容方法
Aug 21 Javascript
javascript数组排序汇总
Jul 07 Javascript
jQuery使用unlock.js插件实现滑动解锁
Apr 04 jQuery
ES6学习之变量的两种命名方法示例
Jul 18 Javascript
js用类封装pop弹窗组件
Oct 08 Javascript
如何自动化部署项目?折腾服务器之旅~
Apr 16 Javascript
Node爬取大批量文件的方法示例
Jun 28 Javascript
JS数据类型判断的几种常用方法
Jul 07 Javascript
JavaScript实现网页留言板功能
Nov 23 Javascript
JS实现页面炫酷的时钟特效示例
Aug 14 Javascript
了解javascript中let和var及const关键字的区别
May 24 #Javascript
如何用原生js写一个弹窗消息提醒插件
May 24 #Javascript
小程序登录/注册页面设计的实现代码
May 24 #Javascript
微信小程序+云开发实现欢迎登录注册
May 24 #Javascript
30分钟用Node.js构建一个API服务器的步骤详解
May 24 #Javascript
Electron-vue开发的客户端支付收款工具的实现
May 24 #Javascript
JS实现判断数组是否包含某个元素示例
May 24 #Javascript
You might like
Discuz 6.0+ 批量注册用户名
2009/09/13 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
phpstrom使用xdebug配置方法
2013/12/17 PHP
Laravel 5.3 学习笔记之 错误&amp;日志
2016/08/28 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
2018/11/29 PHP
ECMAScript 基础知识
2007/06/29 Javascript
鼠标放在图片上显示大图的JS代码
2013/03/26 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
2016/11/29 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
Vue中实现回车键切换焦点的方法
2020/02/19 Javascript
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
python文件和目录操作函数小结
2014/07/11 Python
六个窍门助你提高Python运行效率
2015/06/09 Python
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
CSS书写规范、顺序和命名规则
2014/03/06 HTML / CSS
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
《唯一的听众》教学反思
2014/02/20 职场文书
安全承诺书范文
2014/03/26 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
关于学习的决心书
2015/02/05 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS