前言:
这节课主要学习HTML5中新增的拖放事件(drag/drop)。
拖放事件
1.启用:HTML5中,如果想拖拽元素,给元素添加draggable = 'true'的属性,图像和a标签默认是可以进行拖拽的。
    2.拖拽事件:
1.应用于被拖拽元素
ondragstart:元素被拖拽开始时触发
 ondrag:元素被整个拖拽过程都会触发
 ondragend:拖拽结束时触发(鼠标释放)
 ondragleave:当鼠标位置离开拖拽元素(范围)时触发
 2.应用于目标元素
ondragenter:被拖拽元素进入目标元素就触发
 ondragover:当鼠标拖拽元素(悬浮)在目标元素上触发
 ondrop:当鼠标在目标元素中松开被拖拽元素时触发
  注意:
 ondrop:浏览器会默认阻止此事件
    解决方法:在ondragover中阻止浏览器的默认行为。e.preventDefault();阻止浏览器的默认行为。
 ondragleave:鼠标位置离开目标元素(范围)触发。
  3.拖拽事件的通用方法:
    所有的拖拽方法用document调用,用事件对象event中的target属性确定到底是哪个元素对象在调用方法。
 4.通过dataTransfer实现数据的存储和获取
 e.dataTransfer(format, data);
 format:数据的类型:text/html     text/uri-list
 Data:数据:一般来说是字符串值。
 存储数据的方法:
 e.dataTransfer.setData("text/html", e.target.id);
 获取数据的方法:
 e.dataTransfer.getDate("text/html");
    注意:
 通过e.dataTransfer.setData存储的数据只能在drop事件中获取。
 拖放示例:
<head><meta charset="UTF-8"><title>Title</title><style>*{margin: 0;padding: 0;}.div1{width: 200px;height: 200px;border: 1px solid red;position: relative;margin-left:20px;float: left;}.div2{width: 200px;height: 200px;border: 1px solid blue;position: relative;margin-left:20px;float: left;}.div3{width: 200px;height: 200px;border: 1px solid green;position: relative;margin-left:20px;float: left;}p{background-color: orange;margin-top: 5px;}</style> </head> <body> <div class="div1" id="div1"><!--在h5中,如果想拖拽元素,就必须为元素添加draggable="true". 图片和超链接默认就可以拖拽--><p id="pe" draggable="true">试着把我拖过去</p><p id="pe1" draggable="true">试着也把我拖过去</p> </div> <div class="div2" id="div2"></div> <div class="div3" id="div3"></div> <script>var id = null;document.ondragstart=function(e){/*通过事件捕获来获取当前被拖拽的子元素*/e.target.style.opacity=0.5;e.target.parentNode.style.borderWidth="5px";obj= e.target;}document.ondragend=function(e){e.target.style.opacity=1;e.target.parentNode.style.borderWidth="1px";}document.ondragover=function(e){/*如果想触发ondrop事件,那么就必须在这个位置阻止浏览器的默认行为*/e.preventDefault();}document.ondrop=function(e){/*添加元素*/e.target.appendChild(obj);/*通过e.dataTransfer.setData存储的数据,只能在drop事件中获取*/ // var id=e.dataTransfer.getData("text/html");/*console.log("id="+id);*/ // e.target.appendChild(document.getElementById(id)); } </script> </body>