Html5实现如何在两个div元素之间拖放图像_HTML5教程

模板酷站 2013年04月22日

      推荐:HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析到目前为止,SVG与Canvas的主要特性均已经总结完毕了,现在,我们就来比对一下这两种技术,分析一下它们的长处和适用场景,感兴趣的朋友可以了解下哦,或许对你有所帮助

      原本效果

      拖拽之后效果

      代码如下

      <div class="codetitle">复制代码 代码如下:www.mb5u.com

      [code]
      <!DOCTYPE HTML>
      <html>
      <head>
      <style type="text/css">
      #div1, #div2
      {float:left; width:100px; height:35px; margin:10px;padding:10px;border:1px solid #aaaaaa;}
      </style>
      <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>
      <img src="/i/w3school_logo_black.gif" draggable="true" ondragstart="drag(event)" id="drag1" />
      <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
      </div>
      <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
      </body>
      </html>


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

      设置元素为可拖放

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

      复制代码 代码如下:www.mb5u.com

      <img draggable="true" />

      拖动什么 - ondragstart 和 setData()

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

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

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

      复制代码 代码如下:www.mb5u.com

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


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

      放到何处 - ondragover

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

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

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

      复制代码 代码如下:www.mb5u.com

      event.preventDefault()

      进行放置 - ondrop

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

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

      复制代码 代码如下:www.mb5u.com

      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")把被拖元素追加到放置元素(目标元素)中


      分享:HTML中fieldset标签概述及使用方法之前HTML没有好好学,导致以前看到控件组样式感觉很新奇,fieldset> 标签将表单内容的一部分打包,生成一组相关表单的字段,接下来对HTML中fieldset标签的使用进行详细解读,感兴趣的朋友可以了解下,或许对你有所帮助