运用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+Ajax+PHP+MySQL实现分类列表管理(上)
Oct 28 Javascript
js实现精确到秒的倒计时效果
May 29 Javascript
AngularJS 服务详细讲解及示例代码
Aug 17 Javascript
Html5+jQuery+CSS制作相册小记录
Dec 30 Javascript
jQuery中的deferred使用方法
Mar 27 jQuery
Django1.7+JQuery+Ajax验证用户注册集成小例子
Apr 08 jQuery
微信小程序后台解密用户数据实例详解
Jun 28 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
Apr 10 Javascript
详解微信小程序调起键盘性能优化
Jul 24 Javascript
vue click.stop阻止点击事件继续传播的方法
Sep 04 Javascript
js中int和string数据类型互相转化实例
Jan 16 Javascript
vue分页插件的使用方法
Dec 25 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
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
两个php日期控制类实例
2014/12/09 PHP
PHP查询快递信息的方法
2015/03/07 PHP
php单一接口的实现方法
2015/06/20 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
AngularJS单选框及多选框实现双向动态绑定
2016/01/13 Javascript
JS实现表单多文件上传样式美化支持选中文件后删除相关项
2016/09/30 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
Layui Form 自定义验证的实例代码
2019/09/14 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
python双向链表实现实例代码
2013/11/21 Python
python将unicode转为str的方法
2017/06/21 Python
python分布式环境下的限流器的示例
2017/10/26 Python
tensorflow更改变量的值实例
2018/07/30 Python
python绘制多个曲线的折线图
2020/03/23 Python
django页面跳转问题及注意事项
2019/07/18 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
手把手教你配置JupyterLab 环境的实现
2021/02/02 Python
党校学习自我鉴定
2014/02/24 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
python 解决微分方程的操作(数值解法)
2021/05/26 Python
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏
MySQL 逻辑备份 into outfile
2022/05/15 MySQL
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
2022/06/21 Python