We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Learn more about funding links in repositories.
Report abuse
There was an error while loading. Please reload this page.
第62天 有使用过HTML5的拖放API吗?说说你对它的理解
用来做过排序,还要写临时插入,最终放手插入和数据改变。 其实相比 jqueryUI 里的 draggable 插件,我们还需要写蛮多代码的。 但这个 api 也注定不会扩充到那么强大,可能标准之初大佬们就没打算去加入那些边界判断吧。 还有一点是,他和 scroll 一样,会存在边滑动边改变 scrollTop 这类尴尬的情况。
之前用过sortable.js来处理拖拽
jquery UI我使用过,提供的api已经差不多够用, 原生的在实现的拖拽的层面能有更大的自由度把
直接上例子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> .box { display: inline-block; width: 30px; height: 30px; background: pink; } .container { width: 200px; height: 200px; border: 1px solid rgb(72, 182, 167); } </style> </head> <body> <div class="box" draggable="true"></div> <div class="container"></div> <script> let box = document.querySelector(".box"); let container = document.querySelector(".container"); // 移动元素 box.addEventListener("dragstart", function (e) { console.log("我要移动了") e.dataTransfer.setData("box", e.target.className); }) // 目标元素 container.addEventListener("dragenter", function () { console.log("你每次进入我这里都会触发"); }) container.addEventListener("dragover", function (e) { // 要阻止浏览器默认行为,不然触发不了了下面的drop事件 e.preventDefault(); console.log("你每次在我里面都会不停地触发"); }) // drop 要阻止dragover才能触发 container.addEventListener('drop', function (e) { console.log("在我里面松开鼠标就会触发"); var data = e.dataTransfer.getData("box"); e.target.appendChild(document.getElementsByClassName(data)[0]); }) container.addEventListener("dragleave", function () { console.log("你离开我的时候就会触发"); }) </script> </body> </html>
图片默认自带拖拽功能,非图片元素设置draggable属性为true即可拖拽。 被拖拽元素的事件: ondragstart 拖拽的一瞬间触发 ondrag 拖拽期间连续触发 ondragend 拖拽结束触发 目标元素事件(将拖拽元素释放的地方): ondragenter 进入目标元素触发(鼠标光标进入) ondragover 进入离开目标元素连续触发 ondragleave 离开目标元素触发 ondrop 在目标元素上释放鼠标触发 默认状态下,一个元素不能放在另一个元素上面,需要在ondragover上阻止默认事件。
Activity
yxkhaha commentedon Jun 17, 2019
forever-z-133 commentedon Jun 18, 2019
用来做过排序,还要写临时插入,最终放手插入和数据改变。
其实相比 jqueryUI 里的 draggable 插件,我们还需要写蛮多代码的。
但这个 api 也注定不会扩充到那么强大,可能标准之初大佬们就没打算去加入那些边界判断吧。
还有一点是,他和 scroll 一样,会存在边滑动边改变 scrollTop 这类尴尬的情况。
rocky-191 commentedon Jun 18, 2019
之前用过sortable.js来处理拖拽
Lucenova commentedon Sep 10, 2019
jquery UI我使用过,提供的api已经差不多够用, 原生的在实现的拖拽的层面能有更大的自由度把
ducky-YFH commentedon Oct 25, 2019
直接上例子
smile-2008 commentedon Dec 30, 2020