关键词:

1. draggable:规定元素是否可拖动的,draggable=true可拖动

2. dataTransfer:拖拽对象用来传递的媒介,使用方式:event.dataTransfer

3. ondragstart:拖拽元素被拖拽时触发的事件,作用于被拖拽元素

4. ondragenter:拖拽元素进入目标元素时触发的事件,作用于目标元素

5. ondragover:拖拽元素在目标元素移动触发的事件,作用于目标元素

6. ondrop:拖拽的元素在目标元素上同时鼠标放开触发的事件,作用于目标元素上

7. ondragend:拖拽完成后触发的事件,作用于被拖拽元素上

实例:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>拖拽</title>
<style type="text/css">
#rectangle {width:350px;height:70px;padding:10px;border:1px solid #000;}
</style>
</head>
<body> <div id="rectangle"></div>
<p id="word" draggable="true">这是一段可移动的段落,请把该段落拖入上面的矩形进行测试</p>
<script type="text/javascript">
let rectangle = document.getElementById('rectangle'),
word = document.getElementById('word'); word.ondragstart = (e) => {
e.dataTransfer.setData("Text",e.target.id);
}; rectangle.ondragenter = (e) => {
word.style.color = '#e1453c';
};
  
  //ev.preventDefault() 方法:阻止默认的些事件方法等执行。在ondragover中一定要执行preventDefault(),否则ondrop事件不会被触发。
另外,如果是从其他应用软件或是文件中拖东西进来,尤其是图片的时候,默认的动作是显示这个图片或是相关信息,并不是真的执行drop。
此时需要用用document的ondragover事件把它直接干掉。
    rectangle.ondragover = (e) => {
e.preventDefault();
}; rectangle.ondrop = (e) => {
let data=e.dataTransfer.getData("Text");
e.target.appendChild(document.getElementById(data));
e.preventDefault();
}; word.ondragend = (e) => {
document.getElementById('word').style.color = '#3cf078';
};
</script>
</body>
</html>

最新文章

  1. MYSQL批量修改表前缀与表名sql语句
  2. Objective-C 观察者模式--简单介绍和使用
  3. oracle 卸载和安装
  4. Volley网络框架的使用
  5. angular中的 ng-change
  6. Maven提高篇系列之(六)——编写自己的Plugin(本系列完)
  7. 一道SQL面试例题 if...else 与聚集函数
  8. Python学习_算数运算函数
  9. iOS Plist NSUserDefaults 数据存储
  10. [LeetCode]题解(python):130-Surrounded Regions
  11. Java IO详解(六)------随机访问文件流
  12. main函数的实现解析
  13. 【毕业原版】-《伦敦艺术大学毕业证书》UAL一模一样原件
  14. 通用类 对象Excel互转
  15. [leetcode]26. Remove Duplicates from Sorted Array有序数组去重(单个元素只出现一次)
  16. 高效方便的IO库: System.IO.Pipelines
  17. Maven安装Oracle驱动包到本地仓库
  18. RabbitMQ备份交换器
  19. OA系统部署短信过程
  20. mybatis映射文件mapper.xml的写法(collections...)

热门文章

  1. AngularJs 第一个自定义指令编写
  2. 使用99元一年的256MB高性能阿里云Redis加速Discuz论坛
  3. iPhone越狱cydia源大全
  4. mac os maverick下安装nginx+php-fpm via homebrew
  5. java笔记--关于多线程如何查看JVM中运行的线程
  6. Oracle EBS 获取完全的值集信息
  7. B-树特征
  8. Jquery的跨域调用
  9. js判断状态
  10. [翻译] CSStickyHeaderFlowLayout