HTML5中的拖放

1.实现拖放的步骤

①将对象的属性设置为可拖放,即draggable=“true”

②编写有关拖放事件的处理函数。

2.使用dataTransfer对象

dataTransfer对象是事件对象的一个属性,用于从被拖拽元素向放置目标传递字符串格式的数据。因为是事件对象的属性,在拖放事件的事件处理程序中访问dataTranfer对象

①dataTransfer的属性

dropEffect属性:表示拖放操作的视觉效果,该效果必须在用effectAllowed属性指定的允许的视觉效果的范围内,允许指定的值为none、copy、link、move。

effectAllowed属性:用来指定当元素被拖放时所允许的视觉效果,可以指定的值为none、copy、copyLink、copyMove、link、linkMove、move、all.

type属性:存入数据的种类,字符串的伪数组。

②dataTransfer的方法

void clearData方法:清除dataTransfer对象中存放的数据,如果省略参数,则清除全部数据。

void setData方法:向dataTransfer对象内存入数据。

DOMString getData方法:从dataTransfer对象中读取数据。

void setDragImage方法:用img元素设置拖放图标

setData()方法在拖放开始时向dataTransfer对象中存入数据,它用type属性来指定数据MIME类型,而getData()方法在拖动结束时读取dataTransfer对象中的数据。clearData()方法可以用来清除dataTransfer对象内的数据。

3.设定拖放时的视觉效果

dropEffect属性与effectAllowed属性结合设定拖放时的视觉效果。

effectAllowed属性表示当一个元素被拖动时所允许的视觉效果,一般在ondragstart事件中设定,允许设定的值为none、copy、copyLink、copyMove、link、linkMove、move、all。

dropEffect属性表示实际拖放时的视觉效果,一般在ondragover事件中指定,允许设定的值为none、copy、link、move。

dropEffect属性所表示的实际视觉效果必须在effectAllowed属性所表示的允许的视觉效果范围内

规则:

如果effectAllowed属性设定none。则不允许拖放元素。

如果dropEffect属性设定为none,则不允许被拖放到目标元素中。

如果effectAllowed属性设定为all或不设定,则dropEffect属性允许被设定为任何值,并且按指定的视觉效果进行显示。

如果effectAllowed属性设定为具体效果,dropEffect属性也设定了具体视觉效果,则两个具体效果值必须完全相等,否则不允许将被拖放元素拖放到目标元素中。

4.自定义拖放图标

5.实例:选择图形

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>

    <style type="text/css">
        #div1,#div2,#div3,#div4
        {
            border:3px  dashed #ccc;
            float: left;
            margin: 10px;
            min-height: 100px;
            padding: 10px;
            width: 220px;
        }
    </style>

    <script type="text/javascript">

        //关闭默认处理
        function allowDrop(e)
        {
            e.preventDefault();
        }
        //拖放操作
        function drag(e)
        {
            //设置传递的对象
           // e.dataTransfer.setData("Text", e.target.id);
            e.dataTransfer.setData("Text",e.target.id);

            //设置自定义拖动图标
            var dragIcon = document.createElement(‘img‘);
            dragIcon.src = ‘img/dragimg.png‘;
            var dt = e.dataTransfer;
            dt.setDragImage(dragIcon, -10, -10);
        }

        function drop(ev)
        {
            ev.preventDefault();
            //获取传递过来的对象
            var data=ev.dataTransfer.getData("Text");
            //将新对象加入到该对象中
            ev.target.appendChild(document.getElementById(data));
        }
    </script>
</head>
<body>
     <div id="div1" ondrog="drop(event)" ondragover="allowDrop(event)">
         <h2>选择颜色</h2>
         <img src="img/bg_01.png" draggable="true" ondragstart="drag(event)" id="drag1" />

         <img src="img/bg_02.png" draggable="true" ondragstart="drag(event)" id="drag2" />
         <img src="img/bg_03.png" draggable="true" ondragstart="drag(event)" id="drag3" />
     </div>

     <div  id="div2" ondrop="drop(event)" ondragover="allowDrop(event)">
         <h2>红色</h2>
     </div>

     <div id="div3" ondrop="drop(event)" ondragover="allowDrop(event)">
         <h2>绿色</h2>
     </div>

     <div id="div4" ondrop="drop(event)" ondragover="allowDrop(event)">
         <h2>蓝色</h2>
     </div>

</body>
</html>

时间: 2024-10-10 16:05:09

HTML5中的拖放的相关文章

HTML5中的简单拖放

HTML5中的简单拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置.在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 为了让元素可拖动,需要使用 HTML5 draggable 属性,将其值设为true.链接,文本和图片默认是可拖动的(文本选中状态下可拖动,链接和图片任何情况下都可拖动),不需要 draggable 属性. <!DOCTYPE html> <html> <head lang="en"> <meta chars

HTML5中的跨文档消息传递

跨文档消息传送(cross-document messaging),有时候也简称为XDM,指的是来自不同域的页面间传递消息.例如,www.w3cmm.com域中的一个页面与一个位于内嵌框架中的p2p.w3cmm.com域中的页面通信.在XDM机制出现之前,更稳妥地实现这种通信需要花很多功夫.XDM把这种机制规范化,让我们能既稳妥有简单地实现跨文档通信. XDM的核心是postMessage()方法.在HTML5规范中,除了XDM部分之外的其它部分也会提到这个方法名,但都是为了同一个目的:向另一个

HTML5中引入的关键特性

新特性 描述 accesskey 定义通过键盘访问元素的快捷键 contenteditable 该特性设置为true时,浏览器应该允许用户编辑元素的内容.不指定变化后的内容如何保存 contextmenu 定义menu元素的DOM id作为定义钙元素特性的上下文菜单 data-X 制定可以包含在标签中的用户定义的元数据,而不必担心这些元数据与当前的特性或者未来的特性冲突.使用这种类型的特性可以避免创建自定义特性或者过载class特性的常见方法 draggable 定义特性时,允许元素与其内容可以

HTML5新增的拖放API---(一)

HTML5新增了关于拖放的API,通过API可以让HTML页面的任意元素都变成可拖动的,通过使用拖放机制可以开发出更友好的人机交互的界面. 拖放操作可以分为两个动作:在某个元素上按下鼠标移动鼠标(没有松开鼠标),此时开始拖动:在拖动的过程中,只要没有松开鼠标,将会不断产生事件-----这个过程称为“拖”.把被拖动的元素拖动到另外一个元素上并松开鼠标-----这个过程被称为“放”. 一.启动拖放 在HTML5中,<img .../>元素默认就是可拖动的:而<a .../>元素只要设置

Html5学习之拖放操作详解

在html5页面开发中,拖放操作里面非常重要的一个点就是,我们要确定哪里发生了拖放事件.顾名思义,拖放事件,就是有脱(drag)事件和放(drop)事件. 拖放操作里面非常重要的一个点就是,我们要确定哪里发生了拖放事件.顾名思义,拖放事件,就是有脱(drag)事件和放(drop)事件. 当某个元素被拖动的时候,在这个元素上将被依次触发以下事件: 1. dragstart 2. drag 3. dragend 按下鼠标键并开始移动鼠标时,就会在被拖动元素上触发 dragstart 事件,随机触发 

IE中中的拖放实例

拖放首先是由IE4.0引入的,一开始只有IE支持此功能.但现在已经作为HTML5的标准的一部分. 有2种行为可以实现拖放:系统拖放和模拟拖放,其中以前只有IE实现了系统拖放 系统拖放的优点:可以实现浏览器和桌面.浏览器和浏览器.窗口之间.框架页之间的移动: 拖放一开始只支持图像和文本拖放,后来进行了扩展,现在几乎所有元素都可被拖放了. (一)系统拖放 1.拖放事件 拖放事件分为2种:在被拖放项的事件和在放置目标上的事件 1)被拖放项事件 某个项被触发时的事件触发顺序:dragstart;  dr

HTML5 CSS3 专题 : 拖放 (Drag and Drop)

本来准备写一个支持多图片拖拽上传的例子,但是为了更好的理解,先介绍一下HTML5的拖放. 拖放(Drag 和 drop)是 HTML5 标准的组成部分. 浏览器支持 Internet Explorer 9.Firefox.Opera 12.Chrome 以及 Safari 5 支持拖放. 被拖元素,dragElement : 1.添加事件:ondragstart 2.添加属性:dragable 放置元素,dropElement: 1.添加事件:ondargenter , ondragover ,

HTML5移动开发之路(13)——HTML5中的全局属性

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(13)--HTML5中的全局属性 一.accssskey  快捷键 [html] view plain copy print? <!DOCTYPE HTML> <html> <body> <a href="http://blog.csdn.net/column/details/dawanganban-html5.html" accesskey="

4.html5中超链接和路径

html中超链接都是通过<a>标签实现的,html5也不例外,这里就来探讨一下<a>标签. <a>元素属于文本元素,有一些私有属性或者叫局部属性.那么,相对应的还有通用属性或叫做全局属性,全局属性是的问题我们以后再来探讨. 对于其私有属性有哪些,下面用一个表格进行了整理: 属性名称 说明 href 指定<a>元素所指资源的 URL hreflang 指向的链接资源所使用的语言 media 说明所链接资源用于哪种设备 rel 说明文档与所链接资源的关系类型 t