H5 元素拖放

今天分享一个元素拖放的案例,注意:这个是H5新增的;

先放图一张:

1.gif

代码:(一些API和细节都在代码注释里了)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width:400px;
            height:100px;
            background: blue;
            margin-bottom:10px;
            display: flex;
        }
        p{
            width:200px;
            height:50px;
            margin:auto;
            display: flex;
            background: #fff;
            align-items:center;
            justify-content:center;
        }
    </style>
</head>
<body>
<div>
    <p draggable="true">可以拖动的文本</p>
</div>
<div></div>
<div></div>
<div></div>
<script>
    //首先实现拖动要用到的方法有 dragenter  dragover dragleave  drop
    var p = document.querySelector("p");
    /*开始拖动的时触发。 只触发一次  在被拖动的元素上触发*/
    p.addEventListener("dragstart",function () {
//        console.log("p","dragstart..开始拖动")
    });
    /* 拖动的过程中触发。 只要元素在拖动,会一直重复触发   在被拖动的元素上触发*/
    p.addEventListener("drag",function () {
//        console.log("p","drag...")
    });
    /*进入另外一个元素的区域时触发.  是在目标元素上触发*/
    document.addEventListener("dragenter",function (e) {
//        console.log(e.target,"dragenter...进入目标区域");
        var target = e.target;
        if(target.tagName.toLocaleLowerCase() == "div" ){
            target.style.backgroundColor = "red";
        }

    });
    /* 在潜在目标区域的上方的时候会重复触发 */
    document.addEventListener("dragover",function (e) {
        e.preventDefault();

//        console.log(e.target,"dragover...进入目标区域")
    });
    /*从潜在目标元素上方离开的时候触发*/
    document.addEventListener("dragleave",function (e) {
//        console.log(e.target,"dragleave...离开目标区域")
        if(e.target.tagName.toLocaleLowerCase() == "div" ){
            e.target.style.backgroundColor = "blue";
        }
    });
    /*在松开鼠标拖放结束的时候触发*/
    p.addEventListener("dragend",function () {
//        console.log("p","drag...end")
    });
    /*释放拖动元素的时候触发。  这个事件是在dropend事件触发前触发。*/
    document.addEventListener("drop",function (e) {
//        console.log(e.target,"drop...放下")
        if(e.target.tagName.toLocaleLowerCase() == "div"){
            p.parentNode.removeChild(p);
            e.target.appendChild(p);
            e.target.style.backgroundColor = "blue";
        }
    })

</script>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,683评论 25 709
  • H5 meta详解 viewport width:控制 viewport 的大小,可以指定的一个值,如果 600,...
    FConfidence阅读 4,266评论 0 3
  • 一阵风无形淡然 一阵风飘渺超凡 狂野温柔围绕在我身边 忘不了你牵动衣袖 忘不了你抚摸双眼 八面来风,吹开了心愿 紧...
    安徽港河阅读 3,561评论 1 6
  • 绝句两首 杜甫(唐)
    天地昆仑阅读 1,297评论 0 0
  • 多点用心,多点努力,多点耐心,坚持不放弃。 今天是过的最暴躁的一天,也是出了不少小错误的一天,好在下午心情又回归平...
    爱学爱践行的十四阅读 1,805评论 2 1

友情链接更多精彩内容