HTML5--新增拖放事件(7)

前言:

  这节课主要学习HTML5中新增的拖放事件(drag/drop)。

  拖放事件

    1.启用HTML5中,如果想拖拽元素,给元素添加draggable = 'true'的属性,图像和a标签默认是可以进行拖拽的。

    2.拖拽事件:

      1.应用于被拖拽元素 

         ondragstart:元素被拖拽 开始时触发
                      ondrag:元素被整个 拖拽过程都会触发
                      ondragend:拖拽结束时触发( 鼠标释放)
         ondragleave:当 鼠标位置离开拖拽元素(范围)时触发

      2.应用于目标元素

         ondragenter:被拖拽元素进入目标元素就触发
                           ondragover:当 鼠标拖拽元素(悬浮)在目标元素上触发
                           ondrop:当鼠标在目标元素中 松开被拖拽元素时触发
                           注意:
                            ondrop:浏览器会默认阻止此事件
                           解决方法:在ondragover中阻止浏览器的默认行为。e.preventDefault();阻止浏览器的默认行为。
                           ondragleave:鼠标位置离开目标元素(范围)触发。
 
     3.拖拽事件的通用方法:
                 所有的拖拽方法用document调用,用事件对象event中的target属性确定到底是哪个元素对象在调用方法。
    
     4.通过dataTransfer实现数据的存储和获取
                 e.dataTransfer(format, data);
                 format:数据的类型:text/html     text/uri-list
                 Data:数据:一般来说是字符串值。
                 存储数据的方法:
                       e.dataTransfer.setData("text/html", e.target.id);
                 获取数据的方法:
                      e.dataTransfer.getDate("text/html");
                 注意:
                      通过e.dataTransfer.setData存储的数据 只能在drop事件中获取。

    拖放示例

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .div1{
            width: 200px;
            height: 200px;
            border: 1px solid red;
            position: relative;
            margin-left:20px;
            float: left;
        }
        .div2{
            width: 200px;
            height: 200px;
            border: 1px solid blue;
            position: relative;
            margin-left:20px;
            float: left;
        }
        .div3{
            width: 200px;
            height: 200px;
            border: 1px solid green;
            position: relative;
            margin-left:20px;
            float: left;
        }
        p{
            background-color: orange;
            margin-top: 5px;
        }
    </style>
</head>
<body>
<div class="div1" id="div1">
    <!--在h5中,如果想拖拽元素,就必须为元素添加draggable="true". 图片和超链接默认就可以拖拽-->
    <p id="pe" draggable="true">试着把我拖过去</p>
    <p id="pe1" draggable="true">试着也把我拖过去</p>
</div>
<div class="div2" id="div2"></div>
<div class="div3" id="div3"></div>
<script>
    var id = null;
    document.ondragstart=function(e){
        /*通过事件捕获来获取当前被拖拽的子元素*/
        e.target.style.opacity=0.5;
        e.target.parentNode.style.borderWidth="5px";
        obj= e.target;
    }
    document.ondragend=function(e){
        e.target.style.opacity=1;
        e.target.parentNode.style.borderWidth="1px";
    }

    document.ondragover=function(e){
        /*如果想触发ondrop事件,那么就必须在这个位置阻止浏览器的默认行为*/
        e.preventDefault();
    }
    document.ondrop=function(e){
        /*添加元素*/
        e.target.appendChild(obj);
        /*通过e.dataTransfer.setData存储的数据,只能在drop事件中获取*/
//        var id=e.dataTransfer.getData("text/html");
        /*console.log("id="+id);*/
//        e.target.appendChild(document.getElementById(id));
    }
</script>
</body>

 

转载于:https://www.cnblogs.com/diweikang/p/8661575.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值