运用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得到XML某节点的子节点个数的脚本
Oct 11 Javascript
IE事件对象(The Internet Explorer Event Object)
Jun 27 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
Apr 19 Javascript
Jquery实现弹性滑块滑动选择数值插件
Aug 08 Javascript
javascript日期处理函数,性能优化批处理
Sep 06 Javascript
Javascript技术难点之apply,call与this之间的衔接
Dec 04 Javascript
浅谈jQuery中的checkbox问题
Aug 10 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
uploader秒传图片到服务器完整代码
Apr 22 Javascript
慕课网题目之js实现抽奖系统功能
Sep 19 Javascript
详解vue 在移动端体验上的优化解决方案
May 20 Javascript
解决vant的Toast组件时提示not defined的问题
Nov 11 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学习 运算符与运算符优先级
2008/06/15 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
php网页病毒清除类
2014/12/08 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
php防止sql注入的方法详解
2017/02/20 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
2016/05/03 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
AngularJS基础 ng-paste 指令简单示例
2016/08/02 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
在layui中select更改后生效的方法
2019/09/05 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
python正则分组的应用
2013/11/10 Python
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
python如何查看安装了的模块
2020/06/23 Python
德国玩具商店:Planet Happy DE
2021/01/16 全球购物
物业管理求职自荐信
2013/09/25 职场文书
英语自我评价范文
2014/01/24 职场文书
二年级语文教学反思
2014/02/02 职场文书