运用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 Moblie入门—hello world的示例代码学习
Jan 08 Javascript
一个JavaScript操作元素定位元素的实例
Oct 29 Javascript
jQuery后代选择器用法实例
Dec 23 Javascript
node.js操作mysql(增删改查)
Jul 24 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
Jul 27 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
Sep 06 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
Jan 08 Javascript
webpack4 处理CSS的方法示例
Sep 03 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
Mar 13 Javascript
vue引用外部JS的两种种方法
Jan 28 Javascript
小程序如何写动态标签的实现方法
Feb 05 Javascript
如何使JavaScript休眠或等待
Apr 27 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
PHP大神的十大优良习惯
2016/09/14 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
JQery jstree 大数据量问题解决方法
2010/03/09 Javascript
nodejs中exports与module.exports的区别详细介绍
2013/01/14 NodeJs
JS关键字变色实现思路及代码
2013/02/21 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
python练习程序批量修改文件名
2014/01/16 Python
Python使用turtule画五角星的方法
2015/07/09 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
基于HTML5 WebGL的3D机房的示例
2018/03/16 HTML / CSS
Html5之title吸顶功能
2018/06/04 HTML / CSS
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
纬创Java面试题笔试题
2014/10/02 面试题
网络教育自我鉴定
2013/11/01 职场文书
中文师范生自荐信
2014/01/30 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
公司接待方案
2014/03/08 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
主题团日活动总结
2014/06/25 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年化验室工作总结
2014/11/21 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
酒会开场白大全
2015/06/01 职场文书