HTML5+CSS3从入门到精通之移动开发之路(16)神奇的拖放功能
沉沙 2018-11-23 来源 : 阅读 1671 评论 0

摘要:本篇教程探讨了HTML5+CSS3从入门到精通之移动开发之路(16)神奇的拖放功能,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 。

本篇教程探讨了HTML5+CSS3从入门到精通之移动开发之路(16)神奇的拖放功能,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 。

<

在智能手机发展飞速的现在拖放功能已经成为一种时尚,但是在我们的浏览器上是不是还缺少这种方便快捷的功能?在HTML5的新标准中就有关于拖放的标准,作为HTML5标准的一部分,任何元素都可以被拖放。

一、浏览器支持情况

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

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

    二、使用方法

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

        <img draggable="true" />  

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

    让ondragstart属性调用一个函数,并给该函数返回一个拖动对象

        <img id="drag1" src="img_logo.gif" draggable="true"  
        ondragstart="drag(event)" width="336" height="69" />  


    dataTransfer.setData() 方法设置被拖数据的数据类型和值:(我们将被拖动对象的id传给dataTransfer)

        function drag(ev)  
        {  
        <span style="white-space:pre">  </span>ev.dataTransfer.setData("Text",ev.target.id);  
        }  


    放到何处 - ondragover

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

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

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

        event.preventDefault()  

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

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


        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));  
        }  

    代码解释:

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

二、实例说明

        <!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模型添加到<div>里面  
                    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)"    
                style="border:1px solid red;width:300px;height:200px;">  
                </div>  
                <!--要被拖动的对象-->  
                <img id="drag1" src="test.png" draggable="true"  
                ondragstart="drag(event)"/>  
          
            </body>  
        </html>  

   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端HTML5/CSS3频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved