3
关注
1683
浏览

拖放HTML5元素和JavaScript的问题

为什么被折叠? 0 个回复被折叠
馒头饺子饼 未验证用户 用户来自于: 广东省
2020-09-17 04:00

添加dragoverdrop事件列表。

参考: https://developer.mozilla.org/en-US/docs/Web/Events/drop

snowy 未验证用户 用户来自于: 广东省
2020-09-16 14:57

你可以试试这个

var dragSrcEl = null; 
 

 
function handleDragStart(e) { 
 
    // Target (this) element is the source node. 
 
    dragSrcEl = this; 
 

 
    e.dataTransfer.effectAllowed = 'move'; 
 
    e.dataTransfer.setData('text/html', this.outerHTML); 
 

 
    this.classList.add('dragElem'); 
 
} 
 
function handleDragOver(e) { 
 
    if (e.preventDefault) { 
 
    e.preventDefault(); // Necessary. Allows us to drop. 
 
    } 
 
    this.classList.add('over'); 
 

 
    e.dataTransfer.dropEffect = 'move'; // See the section on the DataTransfer object. 
 

 
    return false; 
 
} 
 

 
function handleDragEnter(e) { 
 
    // this/e.target is the current hover target. 
 
} 
 

 
function handleDragLeave(e) { 
 
    this.classList.remove('over'); 
 
} 
 

 
function handleDrop(e) { 
 

 
    if (e.stopPropagation) { 
 
    e.stopPropagation(); 
 
    } 
 

 

 
    if (dragSrcEl != this) { 
 
    this.parentNode.removeChild(dragSrcEl); 
 
    var dropHTML = e.dataTransfer.getData('text/html'); 
 
    this.insertAdjacentHTML('beforebegin',dropHTML); 
 
    var dropElem = this.previousSibling; 
 
    addDnDHandlers(dropElem); 
 
    
 
    } 
 
    this.classList.remove('over'); 
 
    return false; 
 
} 
 

 
function handleDragEnd(e) { 
 
    this.classList.remove('over'); 
 

 

 
} 
 

 
function addDnDHandlers(elem) { 
 
    elem.addEventListener('dragstart', handleDragStart, false); 
 
    elem.addEventListener('dragenter', handleDragEnter, false) 
 
    elem.addEventListener('dragover', handleDragOver, false); 
 
    elem.addEventListener('dragleave', handleDragLeave, false); 
 
    elem.addEventListener('drop', handleDrop, false); 
 
    elem.addEventListener('dragend', handleDragEnd, false); 
 

 
} 
 

 
var cols = document.querySelectorAll('#drag-list li'); 
 
[].forEach.call(cols, addDnDHandlers);
* { 
 
    margin: 0; 
 
    padding: 0; 
 
    border: 0; 
 
    vertical-align: baseline; 
 
    -webkit-tap-highlight-color: rgba(0,0,0,0); 
 
    list-style: none; 
 
    outline: 0; 
 
} 
 

 
html { 
 
    position: relative; 
 
    width: 100%; 
 
    height: 100%; 
 
    background-color: #FFF; 
 
    font: normal 18px/100% Helvetica,Arial,sans-serif; 
 
    color: #666; 
 
} 
 

 
.transitions, a, .page { 
 
    -webkit-transition: all 0.3s ease-out; 
 
    -moz-transition: all 0.3s ease-out; 
 
    -ms-transition: all 0.3s ease-out; 
 
    transition: all 0.3s ease-out; 
 
} 
 

 
a { 
 
    color: #000; 
 
    text-decoration: underline; 
 
} 
 
a:hover { text-decoration: none; } 
 

 
.page { 
 
    max-width: 750px; 
 
    min-width: 230px; 
 
    margin: 25px auto; 
 
    padding: 0 25px; 
 
} 
 

 
.list li { 
 
    position: relative; 
 
    overflow: hidden; 
 
    margin-bottom: 5px; 
 
    border: 1px solid #DDD; 
 
    cursor: move; //effect drag and drop 
 
} 
 
.list span { 
 
    display: block; 
 
} 
 
.list span:nth-child(1) { 
 
    position: absolute; 
 
    left: 0; 
 
    top: 0; 
 
    height: 100%; 
 
    width: 25px; 
 
    background-color: #EEE; 
 
} 
 
.list span:nth-child(2) { 
 
    padding: 10px 10px 10px 40px; 
 
    line-height: 120%; 
 
}
<ol class="list" id="drag-list"> 
 
    <li draggable="true"> 
 
     <span class="dragger">span> 
 
     <span>01 - Lorem ipsum dolor sit amet.span> 
 
    li> 
 
    <li draggable="true"> 
 
     <span class="dragger">span> 
 
     <span>02 - Lorem ipsum dolor.span> 
 
    li> 
 
    <li draggable="true"> 
 
     <span class="dragger">span> 
 
     <span>03 - Lorem ipsum dolor sit amet, consectetur adipisicing elit.span> 
 
    li> 
 
    <li draggable="true"> 
 
     <span class="dragger">span> 
 
     <span>04 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Amet aliquam dolore totam, labore, voluptate delectus?span> 
 
    li> 
 
    <li draggable="true"> 
 
     <span class="dragger">span> 
 
     <span>05 - Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quo, soluta.span> 
 
    li> 
 
ol>

关于作者

问题动态

发布时间
2020-09-15 15:51
更新时间
2022-09-15 16:04
关注人数
3 人关注

相关问题

在页面加载时触发Javascript文本和图片预览
如何使用_和|使JavaScript的数字形状?
正则表达式Javascript:如何截取可能包围或不包含空白的整个单词
的Javascript为什么我可以访问的功能
如何使用XML解析childrenNodes javascript
访问在javascript中使用字符串路径的深层属性和方法
在SQLite中检索多个rowid插入或更新,使用JavaScript
HTML5的contenteditable属性应该是XSS安全吗?
如何在Odoo 8中使用JavaScript?
将css写入javascript代码does not work
个人工作笔记 Powered BY WeCenter V4.1.0 © 2024 粤ICP备2020123311号