Html5 drag and drop
2015-07-11 18:29
477 查看
<!DOCTYPE html> <html> <head> <title>.</title> <style type="text/css"> #columns{width: 380px; height: 120px; border: solid 1px #ccc;} .column{width: 100px; height: 100px; line-height: 100px; text-align: center; margin: 10px; border: solid 1px #ccc; float: left;} .column.over { border: 2px dashed #000; } </style> </head> <body> <div id="columns"> <div class="column" draggable="true">A</div> <div class="column" draggable="true">B</div> <div class="column" draggable="true">C</div> </div> <script> /* Drap and Drop Events: dragstart drag dragenter dragleave dragover drop dragend */ var dragSrcEl = null; function handleDragStart(e) { dragSrcEl = this; e.dataTransfer.effectAllowed = 'move'; e.dataTransfer.setData('text/html', this.innerHTML); } function handleDragOver(e) { if (e.preventDefault) { e.preventDefault(); // Necessary. Allows us to drop. } e.dataTransfer.dropEffect = 'move'; // See the section on the DataTransfer object. return false; } function handleDragEnter(e) { // this / e.target is the current hover target. this.classList.add('over'); } function handleDragLeave(e) { this.classList.remove('over'); // this / e.target is previous target element. } function handleDrop(e) { // this/e.target is current target element. if (e.stopPropagation) { e.stopPropagation(); // Stops some browsers from redirecting. } // Don't do anything if dropping the same column we're dragging. if (dragSrcEl != this) { // Set the source column's HTML to the HTML of the column we dropped on. dragSrcEl.innerHTML = this.innerHTML; this.innerHTML = e.dataTransfer.getData('text/html'); } return false; } function handleDragEnd(e) { // this/e.target is the source node. [].forEach.call(cols, function (col) { col.classList.remove('over'); }); } var cols = document.querySelectorAll('#columns .column'); [].forEach.call(cols, function(col) { col.addEventListener('dragstart', handleDragStart, false); col.addEventListener('dragenter', handleDragEnter, false) col.addEventListener('dragover', handleDragOver, false); col.addEventListener('dragleave', handleDragLeave, false); col.addEventListener('drop', handleDrop, false); col.addEventListener('dragend', handleDragEnd, false); }); </script> </body> </html>
相关文章推荐
- 在网页上显示黑客帝国字幕效果
- HTML5: 本地缓存
- 精选9个值得学习的 HTML5 效果【附源码】
- 【HTML5】websocket 初识
- Html5笔记--新内容
- 移动开发者们,是时候使用HTML5了!
- 轻松几步,让Visual Stdio 2010 支持Html5
- HTML5 之Geolocation API (地理位置应用程序接口)
- HTML5-离线缓存-升级项目笔记一
- 基于CDH5部署Spark记录
- HTML5之本地文件系统API - File System API
- HTML5 五大特性
- 如何让旧浏览器支持HTML5新标签
- HTML5学习笔记-3.文字与排版技巧
- GPIO口中断例程_MK20DX128VLH5_K20系列
- html5开发之viewport使用
- 极简的HTML5模版
- HTML5实现摇一摇的功能(实测后)
- Html5金币掉落配有声音插件demo
- HTML5 CANVAS实现电子签名完整demo