html5 drap & drop

时间:2023-02-23 22:12:06

小知识点记录一下:onselectstart,onselect

1.onselectstart

该js方法是用来控制盒中内容是否被允许选中

<head>
<style>
#tmp {
height: 200px;
background-color: red;
}
</style>
</head> <body>
<div id="tmp">
测试测试
</div>
<input type="text" id="input1">
</body>
<script>
document.getElementById("tmp").onselectstart = function() { return true;
};
document.getElementById("input1").onselect = function() { return false;
};
</script>

  onselectstart,当鼠标mousedown 就开始触发。 return false 表示不允许选中。

2.onselect

在input中的内容被选中后触发

drag&drop

如何启用DnD效果

<div id="drag" draggable="true" style="width:100px;height:50px;background-color:red;">
test
</div>

 

var drag = document.getElementById('drag');
drag.onselectstart = function(){return false;};
// FF下拖拽时,默认不会生成一个被拖拽元素的阴影并跟随鼠标移动
// 需通过e.dataTransfer.setData来启动该效果
drag.ondragstart = function(e){
e.dataTransfer.setData('text', e.target.innerHTML);
};

  

关键点: 

1.为触发拖拽的元素添加 draggable="true" 特性,用于启动HTML5的DnD功能(即元素的 dragstart 事件可被触发)

2.在FF下即使添加 draggable="true" 特性,但仅仅会触发 dragstart 事件,但DnD功能并没有被完全打开(拖拽元素时没有任何视觉效果),需要调用 event.dataTransfer.setData('Text','') 彻底开启DnD功能。

draggable属性详解

作用:用于指定标签是否可被拖拽

属性值范围如下:

1.  true ,表示可被拖拽

2.  false ,表示不可被拖拽

3.  auto ,默认值,img和带href属性的a标签则表示可拖拽,其他标签表示不可被拖拽

4. 其他值,表示不可被拖拽

DnD生命周期

1. 被拖拽元素的生命周期

dragstart :当被拖拽元素开始被拖拽时触发

[a]. event.dataTransfer的大部分设置均在这里配置

[b]. 若调用event.preventDefault()则会阻止拖拽行为,导致后续的拖拽事件不被触发

[c]. 触发dragstart事件后,其他元素的mousemove,mouseover,mouseenter,mouseleave,mouseout事件均不会被触发了

 drag :当被拖拽元素被拖拽时触发

 dragend :当拖拽行为结束后触发

2. 目标元素的生命周期

  dragenter :当被拖拽元素进入目标元素时触发

 dragover :当被拖拽元素在目标元素上移动时触发

 注意:

[a]. 可以在这里设置dropEffect的值,事件的默认行为是将dropEffect设置为none

[b]. 该事件是被拖拽元素在目标元素上移动一段时间后才触发

[c].事件的默认行为是不允许被拖拽元素在其他元素上释放或放置(即无法触发[drop] 事件需要通过event.preventDefault())来阻止默认行为才能触发后续的drop事件

drop:当被拖拽元素在目标元素上,而且释放鼠标左键时触发

注意:

[a]. 对于外来的被拖拽元素(超链接、文件、图片源), drop 事件的默认行为是浏览器将当前页面重定向到被拖拽元素所指向的资源上

[b]. 对文档内部的被拖拽元素,IE10+和Chrome下的默认行为是不作为,而FF得默认行为是新打开一个文档用于访问被拖拽元素所指向的资源

整体生命周期

dragstart -> drag -> dragenter -> dragover ->  dragleave  -> drop -> dragend

DnD中最重要的数据传递对象──DataTransfer对象 

1. effectAllowed

作用:用于设置被拖拽元素可执行的操作。

取值范围:

copy ,限定dropEffect的属性值为copy,否则会鼠标指针为禁止样式

link ,限定dropEffect的属性值为link,否则会鼠标指针为禁止样式

move ,限定dropEffect的属性值为move,否则会鼠标指针为禁止样式

copyLink ,限定dropEffect的属性值为copy和link,否则会鼠标指针为禁止样式

copyMove ,限定dropEffect的属性值为copy和move,否则会鼠标指针为禁止样式

linkMove ,限定dropEffect的属性值为link和move,否则会鼠标指针为禁止

all ,允许dropEffect的属性值为任意值

none ,鼠标指针一直为禁止样式,不管dropEffect的属性值是什么

uninitialized ,没有限定dropEffect属性的值,效果和 all 一样。

注意:仅能在 dragstart 事件中设置该属性,其他事件中设置均无效

【b】.dropEffect

作用:用于设置目标元素将执行的操作,若属性值属于 effectAllowed 范围内,则鼠标指针将显示对应的指针样式,否则则显示禁止的指针样式。

取值范围:

copy :被拖拽元素将被复制到目标元素内,若属于 effectAllowed 范围内时,则鼠标指针显示复制的样式,否则则显示禁止的指针样式。

link :被拖拽元素将以超链接的形式打开资源,若属于 effectAllowed  范围内时,则鼠标指针显示超链接的样式,否则则显示禁止的指针样式。

move :被拖拽元素将被移动到目标元素内,若属于 effectAllowed   范围内时,则鼠标指针显示移动的样式,否则则显示禁止的指针样式。

none :被拖拽元素不能在目标元素上作任何操作,一直显示禁止的指针样式。除了文本框外其他元素的默认值均为none

注意:   

  1. 仅能在 dragover 事件中设置该属性值,其他事件中设置均无效

2. 当显示禁止的指针样式时,将无法触发目标元素的 drop 事件。

方法:

void addElement({HTMLElement} element

添加一起跟随鼠标移动的元素。仅在 dragstart 事件中调用,Chrome37和IE10+不支持该方法;

       void setDragImage({Element} image, {long} x, {long} y) 

       设置拖动时跟随鼠标移动的图片,用来替代默认的元素,若image不是图片元素则会元素临时转换为图片;x用于设置图标与鼠标在水平方向上的距离,y设置图标与鼠标在垂直方向上的距离。仅在 dragstart 事件中调用。IE10+不支持该方法;

html5 drap & drop的更多相关文章

  1. &lbrack;转&rsqb;人人网首页拖拽上传详解&lpar;HTML5 Drag&amp&semi;Drop、FileReader API、formdata&rpar;

    人人网首页拖拽上传详解(HTML5 Drag&Drop.FileReader API.formdata) 2011年12月11日 | 彬Go 上一篇:给力的 Google HTML5 训练营( ...

  2. HTML5 drag &amp&semi; drop &amp&semi; H5 DnD

    HTML5 drag & drop H5 DnD https://html5demos.com/ demos https://html5demos.com/dnd-upload https:/ ...

  3. HTML5 drag &amp&semi; drop 拖拽与拖放简介

    DataTransfer 对象:退拽对象用来传递的媒介,使用一般为Event.dataTransfer. draggable 属性:就是标签元素要设置draggable=true,否则不会有效果,例如 ...

  4. Html5 drag&amp&semi;drop

    下面是一个拖放例子 定义如下的两个div,分别是用于拖放后放置新元素的容器和可拖动的元素: <body> <div id="holder" style=&quot ...

  5. HTML5 drag &amp&semi; drop 拖拽与拖放

    关键词: 1. draggable:规定元素是否可拖动的,draggable=true可拖动 2. dataTransfer:拖拽对象用来传递的媒介,使用方式:event.dataTransfer 3 ...

  6. HTML5 Drag &amp&semi; Drop

    一定要区分不同事件产生的对象 源元素 属性:draggable = "true" 事件: ondragstart:开始拖拽 ondragend:拖拽结束 目标元素 事件: ondr ...

  7. HTML5原生拖拽&sol;拖放⎡Drag &amp&semi; Drop⎦详解

    前言 拖放(drap && drop)在我们平时的工作中,经常遇到.它表示:抓取对象以后拖放到另一个位置.目前,它是HTML5标准的一部分.我从几个方面学习并实践这个功能. 拖放的流程 ...

  8. HTML5原生拖拽&sol;拖放&lpar;drag &amp&semi; drop&rpar;详解

    前言 拖放(drap && drop)在我们平时的工作中,经常遇到.它表示:抓取对象以后拖放到另一个位置.目前,它是HTML5标准的一部分.我从几个方面学习并实践这个功能. 拖放的流程 ...

  9. html5 拖拽&lpar;drag&rpar;和f放置&lpar;drop&rpar;

    知识要点 HTML5 (drag&drop) API  (Event) 拖放数据(对象):DataTransfer 拖放内容:setData getData 拖放效果(动作):dropEffe ...

随机推荐

  1. shell--2&period;shell数组

    shell 数组 (1)定义数组 shell中,用括号表示数组,数组元素用空格分开,定义数组的一般形式 arrt_name=(val1 val2 val3) 或者 arry_name=(val1 va ...

  2. Java原来如此-比较器&lpar;Comparable、Comparator&rpar;

    有时候需要对Collection或者不为单一数字的Array进行比较,有两种方法,1是实现Comparable接口,2是实现Comparator接口. 1.ComParable接口 Comparabl ...

  3. 某个点到其他点的曼哈顿距离之和最小(HDU4311)

    Meeting point-1 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  4. sdutoj 2604 Thrall’s Dream

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2604 Thrall’s Dream Time ...

  5. zkclient

    zkclient 快速指南 Maven依赖 最新的版本发布在Maven*库. <dependency> <groupId>com.github.adyliu</grou ...

  6. cf 189B - Counting Rhombi

    题目:189B - Counting Rhombi http://codeforces.com/problemset/problem/189/B 题意:给定一个长方形的 矩形,求能在这个矩形里有多少 ...

  7. linq中日期格式转换或者比较,程序报错说不支持方法的解决办法

    public void TestMethod1(){using (var _context = new hotelEntities()){var rq = DateTime.Now.Date;var ...

  8. 等价路由在路由器和CE交换机上默认的行为是不同的,路由器总是走第一个下一跳,CE交换机是逐包。

    结论: 1.在eNSP中实验,路由器和CE交换机对于等价路由的默认转发行为是不同的, 路由器:默认是基于流的转发形态,更准确的来讲,ping两个不同的下一跳,都是走等价路由的第一个路由,不走第二条路由 ...

  9. linux文件管理 文件搜索

    文件搜索命令find 'find [搜索范围] [搜索条件]' 搜索文件 find / -name install.log #避免大范围搜索,会非常消耗系统资源 #find是在系统当中搜索符合条件的文 ...

  10. C中有关引用和指针的异同

    参考于https://blog.csdn.net/wtzdedaima/article/details/78377201 C语言也学了蛮久的,其实一直都没有用到过或者碰到过引用的例子.前端时间再全面复 ...