拖拉事件
Posted 没离开过
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拖拉事件相关的知识,希望对你有一定的参考价值。
var dragged; var f = document.getElementById(‘div3‘); document.getElementById(‘draggable‘).addEventListener("dragstart", function( event ) { // 保存被拖拉节点 dragged = event.target; // 被拖拉节点的背景色变透明 event.target.style.opacity = 0.5; // 兼容Firefox event.dataTransfer.setData(‘text/plain‘, ‘anything‘); }, false); document.getElementById(‘draggable‘).addEventListener(‘dragend‘, function( event ) { // 被拖拉节点的背景色恢复正常 event.target.style.opacity = ‘‘; }, false); f.addEventListener(‘dragover‘, function( event ) { // 防止拖拉效果被重置,允许被拖拉的节点放入目标节点 event.preventDefault(); }, false); f.addEventListener(‘dragenter‘, function( event ) { // 目标节点的背景色变紫色 // 由于该事件会冒泡,所以要过滤节点 if ( event.target.className == ‘dropzone‘ ) { event.target.style.background = ‘purple‘; } }, false); f.addEventListener(‘dragleave‘, function( event ) { // 目标节点的背景色恢复原样 if ( event.target.className == ‘dropzone‘ ) { event.target.style.background = ""; } }, false); f.addEventListener(‘drop‘, function( event ) { // 防止事件默认行为(比如某些Elment节点上可以打开链接) event.preventDefault(); if ( event.target.className === ‘dropzone‘ ) { // 恢复目标节点背景色 event.target.style.background = ‘‘; // 将被拖拉节点插入目标节点 dragged.parentNode.removeChild( dragged ); event.target.appendChild( dragged ); } }, false);
<div class="dropzone" id="div1"> <div id="draggable" draggable="true" style="background-color: yellow"> 该节点可拖拉 </div> </div> <br/> <br/> <br/> <div class="dropzone" id="div2"></div> <br/> <br/> <br/> <div class="dropzone" id="div3"></div> <br/> <br/> <br/> <div class="dropzone" id="div4"></div>
dragover事件:拖拉到当前节点上方时,在当前节点上持续触发,该事件的target属性是当前节点。该事件与dragenter事件基本类似,默认会重置当前的拖拉事件的效果(DataTransfer对象的dropEffect属性)为none,即不允许放下被拖拉的节点,所以如果允许在当前节点drop数据,通常会使用preventDefault方法,取消重置拖拉效果为none。
原文链接:http://javascript.ruanyifeng.com/dom/event-type.html
以上是关于拖拉事件的主要内容,如果未能解决你的问题,请参考以下文章
HTML5 DragEvent学习+制作一个可以拖动的DIV
HTML5 DragEvent学习+制作一个可以拖动的DIV
MFC中静态拆分窗口后,每个窗口的滚动条不支持鼠标滚动了,只能拖拉了,怎么回事,求解决啊!!!
Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段