javascript对dom节点拖拽的简单实现(drag特性)
时间:2022-04-27
本文章向大家介绍javascript对dom节点拖拽的简单实现(drag特性),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
直接看代码 ,一切尽在注释中
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Drag</title>
<style type="text/css">
*{
margin: 0px;
padding:0px;
}
#con{
width:100%;
height:500px;
border:1px dotted #999;
}
#img{
margin-left: 10px;
margin-top: 0px;
}
</style>
<script type="text/javascript">
//保存位置的状态值
var pos={
parent_top:0,
parent_left:0,
cur_top:0,
cur_left:0
}
function allowDrop(ev){ //ev是事件对象
ev.preventDefault(); //取消事件已经关联的默认活动
}
function drag(ev){
//dataTransfer是一个媒介,将目标对象放入媒介
//dataTransfer对象用来保存被拖动的数据,仅在拖动事件有效
//这里将被拖动元素的id保存为名为Text的键值对中
ev.dataTransfer.setData("Text",ev.target.id);
//获取被拖动对象相对于上层元素顶边和左边位置
pos.parent_top=ev.target.offsetTop;
pos.parent_left=ev.target.offsetLeft;
pos.cur_top=ev.screenY;
pos.cur_left=ev.screenX;
}
function drop(ev){
var new_top,new_left;
ev.preventDefault();
// alert(2);
var data=ev.dataTransfer.getData("Text"); //从媒介中获取目标对象
var elem=document.getElementById(data);
//这里不能这样使用,因为offset*的值是只读的,不能改变
// elem.offsetLeft=v.parent_left+ev.screenX-v.cur_left+"px";
// elem.offsetTop=v.parent_top+ev.screenY-v.cur_top+"px";
elem.style.marginLeft=pos.parent_left+ev.screenX-pos.cur_left+"px";
elem.style.marginTop=pos.parent_top+ev.screenY-pos.cur_top+"px";
}
</script>
</head>
<body>
<div id="con" ondragover="allowDrop(event);" ondrop="drop(event);">
<img id="img" src="img/index.jpg" draggable="true" ondragstart="drag(event)"/>
</div>
<!-- <div width="100px;" height="200px;" style="border:1px solid #aaa;height:100px;" onclick="showPosition(event);">
<strong>helloworld</strong>
</div> -->
<!-- <img id="img" src="img/index.jpg"/> -->
</body>
</html>
新位置查找原理(加减运算)
运行结果(不好意思,只有图)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PUMA560机器人工具箱运动控制A:路径规划-运动学
- Android 3分钟带你入门开发测试
- Spring Boot 知识清单(一)SpringApplication
- Linux下的IO监控与分析
- pytorch+Unet图像分割:将图片中的盐体找出来
- html 用浏览器打开中文乱码解决方法
- SQLServer 数据库字符集、版本号sql语句查询语法
- chrome 浏览器自保留端口、安全端口有哪些?chrome不能访问某个端口的环境网址,但是其它的浏览器可以访问原因及解决办法。
- MySql 数据库 - 重置数据库、重置初始密码方法,数据库初始化方法,长时间不用忘记密码暴力解决方法
- MobaXterm工具连接Linux服务器入门使用手册,国产化泰山服务器连接工具使用演示
- Linux 服务器配置信息查询方法,国产化申威服务器配置信息查看演示
- 达梦数据库、oracle数据库如何判断指定表有没有建立索引?对应的表有没有索引查询方法
- Linux服务器运行sh文件提示权限不够解决方法?飞腾服务器Permission denied问题授权方法
- 不支持图形化界面的Linux系统如何显示图像化界面?飞腾服务器显示图像化界面方法,DISPLAY environment variable is undefined问题解决方法
- 一分钟学Python| Python的函数(上)