<p>在智能手机发展飞速的现在拖放功能已经成为一种时尚,但是在我们的浏览器上是不是还缺少这种方便快捷的功能?在HTML5的新标准中就有关于拖放的标准,作为Html5标准的一部分,任何元素都可以被拖放。</p><p>一、浏览器支持情况</p><p><br/></p><p>Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari 5 支持拖放。</p><p><br/></p><p>注释:在 Safari 5.1.2 中不支持拖放。</p><p>二、使用方法</p><p>首先,为了使元素可拖动,把 draggable 属性设置为 true :</p><pre class="brush:html;toolbar:false"><img draggable="true" /></pre><p>然后,规定元素被拖动时,会发生什么 </p><p><br/></p><p>让ondragstart属性调用一个函数,并给该函数返回一个拖动对象</p><pre class="brush:html;toolbar:false"><img id="drag1" src="img_logo.gif" draggable="true"
ondragstart="drag(event)" width="336" height="69" /></pre><p>dataTransfer.setData() 方法设置被拖数据的数据类型和值:(我们将被拖动对象的id传给dataTransfer)</p><pre class="brush:html;toolbar:false">function drag(ev)
{
<span style="white-space:pre"> </span>ev.dataTransfer.setData("Text",ev.target.id);
}</pre><p style="margin: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: "microsoft yahei"; white-space: normal; background-color: rgb(255, 255, 255); border: 0px;">放到何处 - ondragover</p><p><br/></p><p>ondragover 事件规定在何处放置被拖动的数据。</p><p>默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。</p><p>这要通过调用 ondragover 事件的 event.preventDefault() 方法:</p><pre class="brush:html;toolbar:false">event.preventDefault()</pre><p>当放置被拖数据时,会发生 drop 事件。</p><p>在上面,ondrop 属性调用了一个函数,drop(event):</p><pre class="brush:html;toolbar:false">function drop(ev)
{
<span style="white-space:pre"> </span>ev.preventDefault();
<span style="white-space:pre"> </span>var data=ev.dataTransfer.getData("Text");
<span style="white-space:pre"> </span>ev.target.appendChild(document.getElementById(data));
}</pre><p>代码解释:</p><ul class=" list-paddingleft-2" style="list-style-type: disc;"><li><p>调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)</p></li><li><p>通过 dataTransfer.getData("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。</p></li><li><p>被拖数据是被拖元素的 id ("drag1")</p></li><li><p>把被拖元素追加到放置元素(目标元素)中</p></li></ul><p>二、实例说明</p><pre class="brush:html;toolbar:false"><!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
//阻止对元素的默认处理方式
function allowDrop(ev)
{
ev.preventDefault();
}
//将被拖动对象的id传递给dataTransfer中间对象
function drag(ev)
{
ev.dataTransfer.setData("Text",ev.target.id);
}
//取得拖动对象id找到对象实例并用DOM模型添加到<p>里面
function drop(ev)
{
ev.preventDefault();
var data=ev.dataTransfer.getData("Text");
ev.target.appendChild(document.getElementById(data));
}
</script>
</head>
<body>
<!--要被拖动到的地方-->
<p id="p1" ondrop="drop(event)"
ondragover="allowDrop(event)"
style="border:1px solid red;width:300px;height:200px;">
</p>
<!--要被拖动的对象-->
<img id="drag1" src="test.png" draggable="true"
ondragstart="drag(event)"/>
</body>
</html></pre><p><img src="http://img.erdangjiade.com//upload/image/505/345/581/1485056855350137.gif" title="1485056855350137.gif" alt="728.gif"/></p><p>以上就是 小强的HTML5移动开发之路(16)——神奇的拖放功能的内容,更多相关内容请关注PHP中文网(www.erdangjiade.com)!</p>
小强的HTML5移动开发之路(16)——神奇的拖放功能-H5教程
亲,积分不够,多去发布资源、评论、签到、 在线充值
或联系微信:826096331人工充值
友情提示:垃圾评论一律封号 加我微信:826096331拉你进VIP群学习群