运用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 相关文章推荐
javascript中负数算术右移、逻辑右移的奥秘探索
Oct 17 Javascript
如何防止回车(enter)键提交表单
May 11 Javascript
javascript模拟实现ajax加载框实例
Oct 15 Javascript
AngularJS基础 ng-copy 指令实例代码
Aug 01 Javascript
AngularJs bootstrap搭载前台框架——准备工作
Sep 01 Javascript
浅谈JavaScript的函数及作用域
Dec 30 Javascript
vue 2.0封装model组件的方法
Aug 03 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
Apr 28 Javascript
详解Vue.js使用Swiper.js在iOS
Sep 10 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
May 09 Javascript
关于layui的动态图标不显示的解决方法
Sep 04 Javascript
vue弹出框组件封装实例代码
Oct 31 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
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
PHP实现微信红包金额拆分试玩的算法示例
2018/04/07 PHP
PHP安全之register_globals的on和off的区别
2020/07/23 PHP
自己的js工具_Form 封装
2009/08/21 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
解决jquery实现的radio重新选中的问题
2015/07/03 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
Python安装OpenCV的示例代码
2020/03/05 Python
基于python爬取链家二手房信息代码示例
2020/10/21 Python
Python request post上传文件常见要点
2020/11/20 Python
Django用内置方法实现简单搜索功能的方法
2020/12/18 Python
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
信息技术教学反思
2014/02/12 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
工作总结与自我评价
2014/09/18 职场文书
单位婚育证明范本
2014/11/21 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript