HTML5新增的许多属性:

o文件型声明(<!DOCTYPE>有一型:<!DOCTYPE HTML>

o新的解析序:不再基于SGML

o新的元素:section, video, progress,nav, meter, time, aside, canvas, command, datalist, details, embed, figcaption,figure, footer, header, hgroup, keygen, mark, output, rp, rt, ruby, source,summary, wbr

oinput元素的新型:date,email, url等等。

o新的属性:ping(用于aarea,charset(用于meta, async(用于script)。

o全域属性:id, tabindex, repeat

o新的全域属性:contenteditable,contextmenu, draggable, dropzone, hidden, spellcheck

o移除元素:acronym, applet,basefont, big, center, dir, font, frame, frameset, isindex, noframes, strike,tt

这篇文章为了记录一下HTML5新增的拖拽属性:

前言

DataTransfer:拖拽象用来传递的媒介,一般Event.dataTransfer

Draggable属性名思,被拖拽的元素需要设置draggable=true,否则不会有效果

<div draggable =’true’></div>

DataTransfer属性和

dropEffect

String

effectAllowed

String

files

FileList

mozCursor

String

mozItemCount

Unsigned long

mozSourceNode

Node

mozUserCancelled

Boolean

types

DOMStringList

ondragstart事件: 当拖拽元素开始被拖拽的候触事件,此事件作用在被拖拽元素上

ondragenter事件:当拖拽元素入目元素候触事件,此事件作用在目标元素上

ondragover事件:当拖拽元素穿过元素候触事件,此事件作用在目标元素上

ondrop事件:当拖拽元素在目标元素上同时放开鼠标时触发的时候,此事件作用在目标元素上

ondragend事件:当拖拽完成事件,此事件作用在被拖拽元素上

Event.preventDefault()方法:阻止默认事件方法等的执行。在ondrop中一定要执行preventDefault,否则ondrop事件不会被触发。另外,如果是从其他应用软件或者文件中拖东西进来,尤其是图片的时候,默认的动作是显示这个图片或者是相关信息,并不是真的执行drop。此时需要用document的ondragover事件替代

Event.effectAllowed属性:拖拽效果,取有:

None,copy,copyLink,copyMove,link,linkMove,move,all,uninitialized(default)

含义

None

该项目不允许被drop

copy

源项目的复制项可能会出现在新的位置

copyLink

允许copy或者link操作

copyMove

允许copy或者move操作

link

可以在新的地方建立与源的链接

linkMove

允许link或者move操作

move

一个项目可能被移动到新的位置

All

允许所有操作

事件触发顺序

ondragstart->ondragenter->ondragover->ondrop->ondragend

Demo
box从右边拖到container中后,box在右边消失,container中添加了被拖拽的box。
右边的box是可排序的。

代码

<body>
<div class="container">container
</div>
<div class="boxList"><div class="box" draggable="true">box-1</div><div class="box" draggable="true">box-2</div><div class="box" draggable="true">box-3</div><div class="box" draggable="true">box-4</div><div class="box" draggable="true">box-5</div><div class="box" draggable="true">box-6</div><div class="box" draggable="true">box-7</div>
</div>
<div class="alert"/></body>
<script>var container = document.getElementsByClassName('container')[0];var boxList = document.getElementsByClassName('boxList')[0];var boxes =  document.getElementsByClassName('box');var listLength = boxes.length;var targetDropEle=null;(function () {for(let i=0;i<listLength;i++){boxes[i].ondragstart = function (ev) {ev.dataTransfer.effectAllowed = "move";ev.dataTransfer.setDragImage(ev.target, 0, 0);ev.dataTransfer.setData("Text",i+1);
//                dataTransfer.setData() 方法设置被拖数据的数据类型和值
//                数据类型是text,值是可拖动元素的innerHTMLtargetDropEle = ev.target;showAlter("ondragstart")}boxes[i].ondragend = function(ev) {/*拖拽结束*/ev.dataTransfer.clearData("Text");targetDropEle = null;showAlter("ondragend");return false};boxes[i].ondragover = function () {/*拖拽元素进入目标元素上移动*/showAlter("ondragover");event.preventDefault();
//            默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式;}boxes[i].ondragenter = function (ev) {showAlter("ondragenter");/*拖拽元素进入目标元素*/}boxes[i].ondrop = function (ev) {/*拖拽元素进入目标元素头上,同时鼠标松开的时候*/if(targetDropEle){ev.preventDefault();
//                调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)showAlter("ondrop");ev.target.parentNode.insertBefore(targetDropEle,ev.target);}}}container.ondragover = function () {/*拖拽元素进入目标元素上移动*/showAlter("ondragover");event.preventDefault();
//            默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式;}container.ondragenter = function (ev) {showAlter("ondragenter");/*拖拽元素进入目标元素*/ev.target.style.opacity=0.5}container.ondrop = function (ev) {/*拖拽元素进入目标元素头上,同时鼠标松开的时候*/if(targetDropEle){ev.preventDefault();
//                调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)showAlter("ondrop");
//                let number=ev.dataTransfer.getData("Text");
//                if(number%2==0){
//                    return false;
//                }targetDropEle.parentNode.removeChild(targetDropEle);container.appendChild(targetDropEle);ev.target.style.opacity=1;}}})();function showAlter(content) {setTimeout(function () {document.getElementsByClassName('alert')[0].style.display="none"},1000)document.getElementsByClassName('alert')[0].innerHTML=content;document.getElementsByClassName('alert')[0].style.display="block"console.log(content);}
</script>

还看到了一些html5的新属性就写在文章末尾吧

<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><style>.userInfo{color: red;}.userInfo:hover{color: transparent;}.userInfo:hover:after{content: attr(data-hover-response);color: black;}</style></head><body><!--data-***--><!--符合html5的规范--><!--js提供dataset方法--><!--css提供attr()方法--><!--<div class="userinfo" userid = "6666" name="hugo"></div>--><divclass="userInfo"id ="user"data-userid="6666"data-hover-response="see I am changed"data-name="hugo"data-date-of-birthday>Fiona</div><!--datalist-->browsers:<inputlist="browsers"><datalistid="browsers"><optionvalue="chrome"></option><optionvalue="fireFox"></option><optionvalue="IE"></option><optionvalue="Opera"></option><optionvalue="Safari"></option></datalist><!--download属性:表明资源是让用户下载的而不是立即显示的。download的值就是文件名--><divstyle="margin-top: 20px"><ahref="1-160F6160T7.jpg"download="kitty.jpg">download with download </a><ahref="1-160F6160T7.jpg"style="margin-left: 20px">download without download </a></div><!--下载动态生成的文件,通bob创建二进制文件,然后用这个属性下载到本地--><!--autofocus 页面加载时自动获得焦点,仅对于input, button, textarea等表单元素有效,多个autofocus存在时候,作用与第一个--><divstyle="margin-top: 20px"><input><buttonautofocus="autofocus">click me</button><textareaautofocus="autofocus"></textarea><inputautofocus="autofocus"></div><!--placeholder--><divstyle="margin-top: 20px"><inputplaceholder="use rname"></div><!--menu目前chrome safari不支持--><div><menutype="context"id="mymenu"><menuitemlabel="fresh post"></menuitem><menuitemlabel="skip to moment"></menuitem><menuitemlabel="share to..."><menuitemlabel="facebook"></menuitem><menuitemlabel="twitter"></menuitem></menuitem></menu></div></body><script>var user = document.getElementById("user");//驼峰的写法user.dataset.dateOfBirthday= "1992-04-04"user.dataset.englishName= "Fiona"//    <!--下载动态生成的文件,通bob创建二进制文件,然后用这个属性下载到本地-->var blob = new Blob(["hello world I am content "]);//文本内容var a = document.createElement("a");a.href= window.URL.createObjectURL(blob);a.download= "hello world.txt";a.textContent= "download hello world"document.body.appendChild(a)
</script></html>

慢慢来,不要慌

HTML5-Drog和Drag相关推荐

  1. html拖放数据库字段,HTML5 拖放(Drag 和 Drop)

    拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. #div1 {width:350px;height:70px;padding:10p ...

  2. HTML5拖放(drag and drop)与plupload的懒人上传

    HTML5拖放能够将本地的文件拖放到页面上,plupload又是很好的文件上传插件,而今天就将两者结合,做了个文件拖拽上传的功能. 简述HTML5拖放 拖放是HTML5标准的一部分,任何元素都能够拖放 ...

  3. html5怎么设置drop,HTML5 拖放(Drag 和 Drop)

    拖放(Drag 和 drop)是 HTML5 标准的组成部分. 将 RUNOOB.COM 图标拖动到矩形框中. 拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标 ...

  4. HTML5 拖放(Drag 和 Drop)简介

    拖放(Drag 和 drop)是 HTML5 标准的组成部分. 拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. HTML5 拖 ...

  5. html5 drag this,HTML5拖放(drag和drog)

    拖放(drag和drog)是HTML5的标准的组成部分,也是种常见的特性,意义为抓起一个元素放入到另外的一个位置,在HTML5中任何元素都可以被拖放,前题是要相关进行设置. 1.设置元素为可拖放,也就 ...

  6. 基于html5拖(drag)放(drop)实现换装小游戏

    编码环境:asp.net mvc3  html5 运行环境:firefox浏览器通过. 一:有关html5的拖放功能,网上介绍的一大把,我将自己学习到的知识点总结如下: 1:全局属性draggable ...

  7. HTML5 实现图片预览和查看原图

    html5从一开始就给开发者很多的期待,提供众多新的API,不用再想以前一样,为了实现某个功能写很多的代码.在以前,如果要实现图片预览会怎么做呢,因为为了安全的原因,web端的js是不能读取文件的本地 ...

  8. 拖拽上传技术-----html5[转载]

    原网址:http://blog.163.com/mongying_net/blog/static/35112712012345352226/ 拖拽上传应用主要使用了以下HTML5技术: Drag&am ...

  9. html5 预览图片原理,html5实现图片预览和查看原图

    html5提供了很多新的API,减轻了很多开发者的工作,比如这次要讲解的FileReader和naturalWidth,naturalHeight就能实现图片预览和查看原图功能 html5 从一开始就 ...

  10. HTML5滑动(swipe)事件,移动端触摸(touch)事件

    目有个交互需要实现手指滑动的交互,pc端使用mousedown,mousemove,mouseup监听实现. 但在ios设备上mousemove是不好监听的,同类的方法是touchstart,touc ...

最新文章

  1. Dubbo-HelloWorld
  2. iOS9定位获取经纬度 swift
  3. Linux的使用(常见)
  4. lnmp无法远程连接mysql_MySQL(一):设置root 可以远程连接MySQL
  5. 多线程编程学习笔记——使用并发集合(三)
  6. Docker入门之五数据管理
  7. 学英语(1)---常用英语
  8. 拉普拉斯分布_理解拉普拉斯特征映射中的优化问题的约束条件
  9. jsp和mysql的乱码问题_jsp和servlet操作mysql中文乱码问题的解决办法
  10. php7视频处理扩展_PHP7扩展开发之类型处理
  11. 如何开发神经网络来预测电离层中的干扰
  12. 四叶草启动引导配置工具 !Clover Configurator中文版下载!
  13. 2019年微信养号攻略
  14. php_2017手册,PHP中文手册下载-PHP中文手册官方2017(带用户注释)chm版-东坡下载
  15. #1.生活小妙招-联想小新潮7000电脑摄像头打不开
  16. 神州数码c语言笔试题,神州数码软件测试工程师笔试C语言题目详解
  17. 心中有佛,看谁都是佛;心中有屎,看谁都是屎。
  18. TV端影视APP开发搭建需要注意哪些问题?
  19. 怎样把jpg图片转换成pdf
  20. 抗肿瘤靶向药物丨小分子化合物 or 单克隆抗体?- MedChemExpress

热门文章

  1. 2 数据可视化大屏 - 布局
  2. 照片怎么转换成pdf?
  3. 最容易月薪过万城市排名出炉!
  4. 新颖的自我介绍_有创意的自我介绍10篇
  5. aso优化师是什么_什么是ASO优化?
  6. 安卓开发:Password verification failed
  7. Airtest与夜神模拟器连接
  8. JavaScript基础--DOM部分02--李南江
  9. 执行python manage.py celery -A HttpRunnerManager worker --loglevel=info 报错问题集锦
  10. Deecamp20 项目提交【如何用pcdet(second)跑自己的数据】