【Html5拖放详解】


前言

拖放是常见是一个常见操作,在Html5中任何元素都可以被拖放。


提示:以下是关于Html5中拖放的一些知识点,下面案例可供参考

一、拖放是什么?

拖放可以分拖拽(Drag)和放开(Drop)。拖拽就是按下左键移动鼠标到指定位置,放开就是放开鼠标左键,放下对象

二、使用步骤

1.设置元素为可拖放

  • true:可以被拖放
  • false:不可以被拖放
  • auto:浏览器自己判断是否可以被拖放

代码如下(示例):

 <div class="text" draggable="true">hello word</div>

2.被拖放对象的事件

  • ondragstart——开始拖放
  • ondrag——拖放过程中
  • ondragend——结束拖放时
    在这里插入图片描述

3.进入目标投放区的事件

  • ondragenter——被拖放元素鼠标进入时
  • ondragover——被拖放元素鼠标进入了
  • ondragleave——被拖放元素鼠标离开了
  • ondrop——被拖放元素放下了

在这里插入图片描述

4.传递拖拽数据

dataTransfer对象可以在拖拽元素和投放区进行数据共享

  • setData(键名,键值)
  • getData(键名)
    代码如下(示例):
  text.ondragstart=function(e){
        e.dataTransfer.setData('content',text.innerHTML)
    }
  
    box.ondrop=function(e){
       var con= e.dataTransfer.getData('content')
        box.innerHTML=con
    }

补充
- clearData(键名)
删除数据

pret = object.cleardata([sdataformat])
参数sdataformat是指定要删除的数据格式的字符串,可以是下面的值。

Text:删除文本格式数据。
URL:删除URL格式数据。
File:删除文件格式数据。
HTML:删除HTML格式数据。
Image:删除图像格式数据。

如果不指定参数sdataformat,则清空dataTransfer对象中的所有数据。

三、注意:阻止默认行为

一定要在ondragover中阻止一些放置区域的默认行为,因为默认行为中不允许放置其他元素

 box.ondragover=function(e){
        e.preventDefault()
    }

四、实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 300px;
            height: 300px;
            margin: 0 auto;
            text-align: center;
            line-height: 300px;
            border: 2px solid #ccc;
        }
        .text{
            width: 100px;
            height: 100px;
            text-align: center;
            line-height: 100px;
            background-color: aquamarine;
        }
    </style>
</head>
<body>
    <div class="text" draggable="true">hello word</div>
    <div class="box"></div>
</body>
<script>
    var text=document.querySelector('.text')
    var box=document.querySelector('.box')

    text.ondragstart=function(e){
        e.dataTransfer.setData('content',text.innerHTML)
    }
  
    box.ondrop=function(e){
       var con= e.dataTransfer.getData('content')
        box.innerHTML=con
    }
  box.ondragover=function(e){
        e.preventDefault()
    }
</script>
</html>

拖放前

在这里插入图片描述
拖放后
在这里插入图片描述

五、dataTransfer 对象的属性

(1)dropEffect
dropEffect 属性用于获取和设置拖放操作的类型以及光标的类型(形状)。

dropEffect 属性的可能取值

  1. copy 显示copy光标
  2. link 显示link光标
  3. move 显示move光标
  4. none 默认值,即没有指定光标

(2)effectAllowed
effectAllowed属性用于获取和设置对被拖放的源对象允许执行何种数据传输操作。

effectAllowed 属性的可能取值

  1. copy 允许执行复制操作
  2. link 将源对象链接到目的地
  3. move 将源对象移动到目的地
  4. copyLink 可以是copy或link,取决于目标对象的默认值
  5. copyMove 可以是copy或move,取决于目标对象的默认值
  6. linkMove 可以是link或move,取决于目标对象的默认值
  7. all 允许所有数据传输操作
  8. none 没有数据传输操作,即放开时不执行任何操作
  9. uninitialized 表明没有为effectAllowed属性设置值,执行默认的拖放操作,为默认值

————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq_36823300/article/details/100936517


总结

以上就是今天要讲的内容,本文简单介绍了拖放,希望可以有帮助。

  • 28
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的HTML 5实例: ```html <!DOCTYPE html> <html> <head> <title>HTML 5实例</title> <style> #div1 { width: 200px; height: 200px; padding: 10px; border: 1px solid black; } </style> <script> function allowDrop(event) { event.preventDefault(); } function drag(event) { event.dataTransfer.setData("text", event.target.id); } function drop(event) { event.preventDefault(); var data = event.dataTransfer.getData("text"); event.target.appendChild(document.getElementById(data)); } </script> </head> <body> <h2>动这个文本框到方框中</h2> <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div> <br> <input type="text" id="drag1" draggable="true" ondragstart="drag(event)"> </body> </html> ``` 在这个实例中,我们创建了一个文本框和一个方框,文本框可以被动到方框中。实现这个功能的关键是使用了HTML 5的事件,包括`ondragstart`、`ondragover`和`ondrop`事件。 当我们开始动文本框时,会触发`ondragstart`事件,这个事件中我们使用了`event.dataTransfer.setData()`方法设置了数据类型和数据内容。在这个例子中,我们将数据类型设为"text",数据内容为文本框的id。 当我们将文本框动到方框上时,会触发`ondragover`事件。在这个事件中,我们使用了`event.preventDefault()`方法来防止默认的操作(例如在浏览器中打开被动的元素)发生。 当我们在方框中下文本框时,会触发`ondrop`事件。在这个事件中,我们使用了`event.preventDefault()`方法来防止默认的操作(例如在浏览器中打开被动的元素)发生。然后,我们使用`event.dataTransfer.getData()`方法获取了被动元素的id,并将其添加到方框中。 这个实例只是一个简单的演示,但是HTML 5的功能非常强大,可以在实际的应用中发挥很大的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值