zoukankan      html  css  js  c++  java
  • html5如何实现元素拖放

    html5如何实现元素拖放

    一、总结

    一句话总结:参考文档里面有各种想象不到的好东西。一边允许拖放,一边接收拖放,一边传递数据,一边接收数据。拖放过程还要防止拖放以默认方式(链接)打开。

    1、html5如何实现元素拖放?

    一边允许拖放,一边接收拖放,一边传递数据,一边接收数据。拖放过程还要防止拖放以默认方式(链接)打开。

    2、html5中拖放中如何实现允许拖放?

    draggable="true"
    32 <img id="drag1" src="/i/eg_dragdrop_w3school.gif" draggable="true" ondragstart="drag(event)" />

    3、html5中拖放中如何实现接收拖放?

    ondragover="allowDrop(event)"
    30 <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
     8 function allowDrop(ev)
     9 {
    10 ev.preventDefault();
    11 }

    4、html5中拖放中如何实现传递数据?

    ondragstart="drag(event)"
    32 <img id="drag1" src="/i/eg_dragdrop_w3school.gif" draggable="true" ondragstart="drag(event)" />
    13 function drag(ev)
    14 {
    15 ev.dataTransfer.setData("Text",ev.target.id);
    16 }

    5、html5中拖放中如何实现接收数据?

    ondrop="drop(event)"
    30 <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
    18 function drop(ev)
    19 {
    20 ev.preventDefault();
    21 var data=ev.dataTransfer.getData("Text");
    22 ev.target.appendChild(document.getElementById(data));
    23 }

    6、html5中拖放中如何实现拖放过程防止拖放以默认方式(链接)打开?

    ev.preventDefault();
     8 function allowDrop(ev)
     9 {
    10 ev.preventDefault();
    11 }
    18 function drop(ev)
    19 {
    20 ev.preventDefault();
    21 var data=ev.dataTransfer.getData("Text");
    22 ev.target.appendChild(document.getElementById(data));
    23 }

    二、html5如何实现元素拖放

    1、示例代码

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4 <style type="text/css">
     5 #div1 {width:198px; height:66px;padding:10px;border:1px solid #aaaaaa;}
     6 </style>
     7 <script type="text/javascript">
     8 function allowDrop(ev)
     9 {
    10 ev.preventDefault();
    11 }
    12 
    13 function drag(ev)
    14 {
    15 ev.dataTransfer.setData("Text",ev.target.id);
    16 }
    17 
    18 function drop(ev)
    19 {
    20 ev.preventDefault();
    21 var data=ev.dataTransfer.getData("Text");
    22 ev.target.appendChild(document.getElementById(data));
    23 }
    24 </script>
    25 </head>
    26 <body>
    27 
    28 <p>请把 W3School 的图片拖放到矩形中:</p>
    29 
    30 <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
    31 <br />
    32 <img id="drag1" src="/i/eg_dragdrop_w3school.gif" draggable="true" ondragstart="drag(event)" />
    33 
    34 </body>
    35 </html>

    截图:

    2、HTML 5 拖放

    拖放(Drag 和 drop)是 HTML5 标准的组成部分。

    拖放

    拖放是一种常见的特性,即抓取对象以后拖到另一个位置。

    在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。

    浏览器支持

    Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari 5 支持拖放。

    注释:在 Safari 5.1.2 中不支持拖放。

    HTML5 拖放实例

    下面的例子是一个简单的拖放实例:

    实例

    <!DOCTYPE HTML>
    <html>
    <head>
    <script type="text/javascript">
    function allowDrop(ev)
    {
    ev.preventDefault();
    }
    
    function drag(ev)
    {
    ev.dataTransfer.setData("Text",ev.target.id);
    }
    
    function drop(ev)
    {
    ev.preventDefault();
    var data=ev.dataTransfer.getData("Text");
    ev.target.appendChild(document.getElementById(data));
    }
    </script>
    </head>
    <body>
    
    <div id="div1" ondrop="drop(event)"
    ondragover="allowDrop(event)"></div>
    <img id="drag1" src="img_logo.gif" draggable="true"
    ondragstart="drag(event)" width="336" height="69" />
    
    </body>
    </html>
    

    亲自试一试

    它看上去也许有些复杂,不过我们可以分别研究拖放事件的不同部分。

    设置元素为可拖放

    首先,为了使元素可拖动,把 draggable 属性设置为 true :

    <img draggable="true" />

    拖动什么 - ondragstart 和 setData()

    然后,规定当元素被拖动时,会发生什么。

    在上面的例子中,ondragstart 属性调用了一个函数,drag(event),它规定了被拖动的数据。

    dataTransfer.setData() 方法设置被拖数据的数据类型和值:

    function drag(ev)
    {
    ev.dataTransfer.setData("Text",ev.target.id);
    }
    

    在这个例子中,数据类型是 "Text",值是可拖动元素的 id ("drag1")。

    放到何处 - ondragover

    ondragover 事件规定在何处放置被拖动的数据。

    默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。

    这要通过调用 ondragover 事件的 event.preventDefault() 方法:

    event.preventDefault()

    进行放置 - ondrop

    当放置被拖数据时,会发生 drop 事件。

    在上面的例子中,ondrop 属性调用了一个函数,drop(event):

    function drop(ev)
    {
    ev.preventDefault();
    var data=ev.dataTransfer.getData("Text");
    ev.target.appendChild(document.getElementById(data));
    }
    

    代码解释:

    • 调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)
    • 通过 dataTransfer.getData("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。
    • 被拖数据是被拖元素的 id ("drag1")
    • 把被拖元素追加到放置元素(目标元素)中

    更多实例

    来回拖放图片
    如何在两个 <div> 元素之间拖放图像。
     
  • 相关阅读:
    内网邮件服务器搭建
    solr的命令
    solr的post.jar
    Java IO(四--字符流基本使用
    Java IO(三)--字节流基本使用
    Java IO(二)--RandomAccessFile基本使用
    Java集合(三)--Collection、Collections和Arrays
    Java集合(二)--Iterator和Iterable
    Java IO(一)--File类
    Java基础(十四)--装箱、拆箱详解
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9222994.html
Copyright © 2011-2022 走看看