运用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 相关文章推荐
ExtJS 2.0实用简明教程之应用ExtJS
Apr 29 Javascript
JS与框架页的操作代码
Jan 17 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
Mar 10 Javascript
javascript中注册和移除事件的4种方式
Mar 20 Javascript
解析js中获得父窗口链接getParent方法以及各种打开窗口的方法
Jun 19 Javascript
js实现瀑布流的一种简单方法实例分享
Nov 04 Javascript
js实现的倒计时按钮实例
Jun 24 Javascript
canvas绘制万花筒效果(代码分享)
Jan 20 Javascript
老生常谈jquery id选择器和class选择器的区别
Feb 12 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
Mar 09 Javascript
详解Angular2中Input和Output用法及示例
May 21 Javascript
js禁止Backspace键使浏览器后退的实现方法
Sep 01 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
利用js调用后台php进行数据处理原码
2006/10/09 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
js监听表单value的修改同步问题,跨浏览器支持
2009/12/31 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
jQuery下的动画处理总结
2013/10/10 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
5种JavaScript脚本加载的方式
2017/01/16 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
Python兔子毒药问题实例分析
2015/03/05 Python
10款最好的Web开发的 Python 框架
2015/03/18 Python
Python中字符串格式化str.format的详细介绍
2017/02/17 Python
python实现画圆功能
2018/01/25 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
python中logging包的使用总结
2018/02/28 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
毕业生精彩的自我评价分享
2013/10/06 职场文书
超市后勤自我鉴定
2014/01/17 职场文书
经典演讲稿汇总
2014/05/19 职场文书
五四青年节演讲稿
2014/05/26 职场文书
关于运动会的口号
2014/06/07 职场文书
幼儿体育课教学反思
2016/02/16 职场文书
js 实现验证码输入框示例详解
2022/09/23 Javascript