小知识点记录一下: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. [转]人人网首页拖拽上传详解(HTML5 Drag&Drop、FileReader API、formdata)

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

  2. HTML5 drag & drop & H5 DnD

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

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

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

  4. Html5 drag&drop

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

  5. HTML5 drag & drop 拖拽与拖放

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

  6. HTML5 Drag & Drop

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

  7. HTML5原生拖拽/拖放⎡Drag & Drop⎦详解

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

  8. HTML5原生拖拽/拖放(drag & drop)详解

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

  9. html5 拖拽(drag)和f放置(drop)

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

随机推荐

  1. android TextView加载html内容并加载图片

    package com.example.textviewfromhtml; import java.net.URL; import android.app.Activity; import andro ...

  2. uname -r和uname -a了解

    1.uname -r :显示操作系统的发行版号2.uname -a :显示系统名.节点名称.操作系统的发行版号.操作系统版本.运行系统的机器 ID 号. #uname -aHP-UX RX1600 B ...

  3. css常用命名规则

    (一)常用的CSS命名规则 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrappe ...

  4. Uva 1625,颜色的长度

    类似于LCS的动态规划,指标函数的分解. 题目链接:https://uva.onlinejudge.org/external/16/1625.pdf 题目大意:两个颜色序列,将他们合并,合并的时候,每 ...

  5. hiho 第118周 网络流四·最小路径覆盖

    描述 国庆期间正是旅游和游玩的高峰期. 小Hi和小Ho的学习小组为了研究课题,决定趁此机会派出若干个调查团去沿途查看一下H市内各个景点的游客情况. H市一共有N个旅游景点(编号1..N),由M条单向游 ...

  6. Java中数组的特性

    转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...

  7. Axure一点

    自己的感受:非常的考脑,上课要集中120分精神. Axure(快速制作网页原型) 1:全局变量:a:在菜单栏中可以新建全局变量. b:控制全部网页. c:取到输入框的值,设置User的值等于输入框的值 ...

  8. 创建Linux swap

    创建SWAP文件(下面指定的是8G容量,系统物理内存8G): dd if=/dev/zero of=/data/swapfile bs=1M count=8192 格式化该文件 mkswap swap ...

  9. nylg 640 Geometric Sum

    Geometric Sum 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 Compute (a + a^2 + … + a^n) mod m.(a+a2+…an)m ...

  10. 【jQuery】JS中拼接URL发送GET请求的中文、特殊符号的问题

    > 参考的优秀文章 jQuery ajax - param() 方法 经常,我们需要在JS中拼接URL然后以GET形式提交请求.如果遇到中文.特殊符号则需要作各种处理. jQuery有一个方法非 ...