运用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 学习笔记(七)字符串的连接
Dec 31 Javascript
js实现iframe自动自适应高度的方法
Feb 17 Javascript
jquery让指定的元素闪烁显示的方法
Mar 17 Javascript
JavaScript实现数字数组正序排列的方法
Apr 06 Javascript
JS实现的论坛Ajax打分效果完整实例
Oct 31 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
Jun 27 Javascript
如何利用JQuery实现从底部回到顶部的功能
Dec 27 Javascript
JavaScript两个变量交换值的实现方法
Mar 01 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
Jul 12 Javascript
详解ES7 Decorator 入门解析
Feb 18 Javascript
详谈Object.defineProperty 及实现数据双向绑定
Jul 18 Javascript
浅谈JavaScript中this的指向更改
Jul 28 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制作静态网站的模板框架
2006/10/09 PHP
在PHP中利用XML技术构造远程服务(下)
2006/10/09 PHP
PHP的autoload自动加载机制使用说明
2010/12/28 PHP
php中通过虚代理实现延迟加载的实现代码
2011/06/10 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
JavaScript简介
2015/02/15 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
js实现聊天对话框
2020/02/08 Javascript
vue循环中点击选中再点击取消(单选)的实现
2020/09/10 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
python使用ctypes模块调用windowsapi获取系统版本示例
2014/04/17 Python
Python实现简单截取中文字符串的方法
2015/06/15 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
利用Python实现图书超期提醒
2016/08/02 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
HTML5地理定位_动力节点Java学院整理
2017/07/12 HTML / CSS
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
美国批发供应商:Kole Imports
2019/04/10 全球购物
研究生毕业论文导师评语
2014/12/31 职场文书
技术员岗位职责范本
2015/04/11 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
Java并发编程之Executor接口的使用
2021/06/21 Java/Android
python编程实现清理微信重复缓存文件
2021/11/01 Python
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS