关注前端开发/网页设计/网站可用性/用户体验
上周六有幸同我们人人网的几个同事一起去Google总部参加了《给力HTML5 —— 2011 Google HTML5 训练营》,从下午1点多到晚上9点多8个小时左右的时间,收获还是很大的,8个小时的时间把以前一直想学或想做的事情都给搞了一些。好久没有写博客了,今天也该分享些给力的东西了,正好借此次机会跟大家分享些HTML5相关的给力的技术(sessionStorage、localStorage、Web SQL DateBase、Indexed DB、Canvas绘图、FileReader、Drag&Drop…),何止是给力,简直就是给力!
您还可以参考以下HTML5相关文章:
《HTML5 WebSockets 基础使用教程》
《关于HTML 5 canvas 的基础教程》
《让所有IE支持HTML5的解决方案》
《一起感受HTML5和CSS3的能量》
先简单介绍一下这个训练营的活动流程:
1:00 – 1:30 注册
1:30 – 2:30 HTML5 技术剖析
技术讲座1 —— Google 工程师
技术讲座2 —— 特邀嘉宾(李靖威、李继成,就职于人人网)
2:30 – 3:00 宣布竞赛规则,开始组队
3:00 – 6:30 作品创作 / 提交
6:30 – 7:00 作品展示
7:00 – 7:30 评奖、颁奖
讲座部分,先是Google工程师寒蕊MM跟我们分享了些HTML5的新技术概况,其中大致包括:sessionStorage、localStorage、Web SQL DateBase 、Indexed DB,寒蕊MM还专门写了篇关于IndexedDB的文章《客户端数据存储》,文章用实例的方式讲了Web Storage(localStorage)、Web SQL Database 和 Indexed Database的用法。
其中Web SQL Database虽是HTML5的技术,但由于某些原因,W3C组织(Web Applications Working Group)已不再维护这项技术,也就是说虽然目前Chrome、FireFox新版本浏览器支持这项技术,但不一定未来的版本还会支持。以下为w3c官网的声明:
Beware. This specification is no longer in active maintenance and the Web
Applications Working Group does not intend to maintain it further.
Indexed DataBase最初是由Oracle提出的数据库API,没记错的话起初叫做Simple DataBase,之后演变成Indexed DataBase,而且已被Chrome和FireFox(版本4)所支持。
这次活动规模比较小,由于人数限制在了30人,所以组队Coding阶段,每队5人,分成了6组~接下来就是短短3个小时左右的Coding了,我们人人网的四个人和另一位有Canvas经验的邱亮同学一起开发一个纯HTML5的可涂鸦日记本,其中有个插曲:一开始项目名字没多想就直接叫做《我的日记本》了,到最后提交项目的时候,Google MM说要起一个简洁且酷一些的名字,好吧,那我们就起一个简洁酷一些的名字,最后就叫《我日》!哇咔咔~让大家”贱笑”了~
言归正传,《我日》项目之所以叫纯HTML5,其实只是使用了些HTML5技术,在短短的3个小时时间,从功能到分工开发,时间很紧~所以只是做了个小小的Demo版,基本功能实现的差不多了,但愿以后还能有时间把它完善一下~其中使用了这些HTML5技术:
1.Web SQL DataBase :存取日记数据
2.HTML5 Drag&Drop 事件 :监听网页内图片拖拽及本地图片直接拖拽到日记中的事件
3.FileReader :获取本地图片拖拽到日记本里的图片数据
4.Canvas :实现日记涂鸦功能(画笔、调色、文字、图片绘制到画布等…)
5.HTML5新标签 :如:<input type=”range”… /> 、 <section> 、<article>等…
6.CSS3
今天我只详细讲讲我的分工部分:HTML5 Drag & Drop 和 FireReader这两个东西,以后有机会在和大家分享其他技术。
过去我们想实现网页中的拖拽效果,基本上都是使用DOM事件模型中的mousedown、mousemove、mouseup的事件监听来模拟拖拽效果,为了实现实时的拖拽移动效果,还要不停地获取鼠标的坐标,还要不停的修改元素的位置,代码要堆很多,而且性能上也很不好(不停地修改元素位置会导致页面reflow,除非绝对定位),现在有了html5原生的Drag & Drop 拖拽事件,真的是方便了许多,用”事半功倍”来形容绝不为过。
Drag & Drop 包括以下事件:
完成一次成功页面内元素拖拽的行为事件过程应该是: dragstart –> dragenter –> dragover –> drop –> dragend
HTML5为元素新增了用于拖拽的属性draggable,这个属性决定了元素是否能被拖拽,如果draggable=”true”,则元素可被拖拽,否则只能选择元素的文本。
值得一提的是HTML5支持拖拽数据存储,使用dataTransfer接口,作用于元素的拖拽基础上,dataTransfer对象包含以下属性和方法:
在dragstart事件触发时可以为被拖拽元素存储数据,就是使用上面说到的dataTransfer.setData,setData的数据格式一般有两种:”text/plain”(用于文本数据)和”text/uri-list”(用于url),你可以先为某个可拖拽元素设置微数据,然后为它设置draggable属性为true,之后在其dragstart事件触发时存储数据:
html部分:
javascript部分:
在拖拽结束的时候便可以获取相应元素的数据:
创建拖拽事件监听的时候记得要把默认的行为事件去掉,毕竟浏览器是有默认拖拽行为的,尤其是dragover事件一定要使用e.preventDefault(),不然drop事件可能不会被触发:
上面讲的这些基本上就能完成页面内元素的拖拽操作了,下面我们来说说从本地拖拽图片到页面元素中用到的技术:
作为 File API 的一部分,FileReader 专门用于读取文件,根据 W3C 的定义,FileReader 接口 “提供一些读取文件的方法与一个包含读取结果的事件模型”。
来看看FileReader支持的方法、属性和事件:
今天只说说关于拖拽本地文件到页面的几个相关FileReader属性和事件:
在FileReader onload事件触发后,你可以通过this.result来获取读取的文件数据,如果是图片,将返回base64格式的图片数据。
OK,通过以上代码你就可以完成基本的本地图片拖拽到页面指定元素内的功能了。
点击查看实例Demo
注意,以上demo仅可使用新版Chrome和FireFox查看,IE不支持。
好了,今天先讲这些,今后会更新更多HTML5相关的技术的,希望大家多多关注~
订阅彬Go以查看HTML5最新资源、教程。
55 条 关于 "给力的 Google HTML5 训练营(HTML5 Drag&Drop 拖拽、FileReader实例教程)" 的评论
css和js取代ui图片,这前景不错。
您博客太有料了,订阅收藏了。
很炫啊,这么短的时间里,开发出来这么好玩的东西。
[...] This post was mentioned on Twitter by Links About Google. Links About Google said: 给力的 Google HTML5 训练营(HTML5 Drag&Drop 拖拽、FileReader实例教程): http://bit.ly/dFK2cj [...]
太强悍了!!
谢谢分享,支持!
好博文,支持分享
挺有用的,谢谢了
《我日》Demo 预览
在 Firefox4b10 无法正确运行,看了下控制台。
发现在 paint.js 里有个 addEventListener() 少了个参数。
在 128 行:
fontSize.addEventListener(‘change’,function(){
fontSizeOutput.innerHTML = this.value;
});
用 Chrome 运行了下,发现可以正确地运行。汗。。。
html5还得有几个几年,尤其在大陆。遇上ie这个科技发展的搅屎棍,再好的技术也白搭。不说其他的,就ie6到现在生命力依然强劲!内牛满面啊!
如果你的产品放弃对ie支持,那可以说在放弃市场。微软就一操蛋玩意!
大公司的这种活动真的很给力,谢谢分享。希望你的博客越做越好!
博客风格挺好,我还是习惯边栏在左边。
哈哈 好东西啊
文章很好!博主太有才了!
大力支持!
好文章!
楼主太有才了!
我才刚学呢,啥时才有博主的功力呢
雪花秀来过了,有空记得回访哈。
果然不一样啊…都是86年生的,,技术水平差距太大了…向楼主学习…
拜读博文,来看看支持一下,嘿嘿
要普片应用还得很多年吧
博客确实需要一种态度 风格
真给力,学习中
太伤我心了,原来代码我看不懂,现在学习了这么长时间还是看不懂的!
支持博主 下回来了希望你有更好的文章
想不到 html5 已經可以有這樣的展現能力了~
看來我還要好好學習了~
^^
受教了,HTML5居然这么牛
芙蓉姐姐 瞎了。。。
团宝网http://www.lolibao.com/ 支持你的博客!一起给力加油 努力
楼主为何不把自己的博客弄成HTML5_CSS3呢, 紧随时代的脚步。。。。。。。。。。。。。
确实是一个号注意
[...] 转自:给力的 Google HTML5 训练营(HTML5 Drag&Drop 拖拽、FileReader实例教程) 七月 6th, 2011 (上午 4:56) – Design, Reprint Minimize [...]
学习了支持一下哟
0d8
哈哈,楼主太强悍、太有才了,强烈支持!!!
fe47b62a0
文章不错,很受用w0u0aq,http://www.my580.com/?w0u0aq非诚勿扰收藏啦。[dp.my580.com女装哪个好]
平板电脑你那边做的如何,有机会额合作吗????
写的很好,不错,不错~
确实很不错呢
生活不是单行线,一条路走不通,你可以转弯。常来您这里 学习 这是我的小站http://www.91253.com/
有料,学习了.收藏先.
0fb689460武汉笔记本专业维修中心
永飞科技笔记本维修服务中心专业维修国内外各品牌笔记本电脑,针对笔记本出现的各种故障能够提供最好的解决方案。笔记本硬件故障方面,对于笔记本开机黑屏、花屏、开机没有反应、笔记本没声音、开机蓝屏、开机报警等故障拥有丰富的维修经验。对于软件调试以及系统安装能够提供最稳定的解决方法。笔记本电脑在日常使用出现的各种问题,均可以提供电话免费解答以及上门服务。对于电脑出现的高温现象以及电脑很卡的情况能够快速解决。
维修中心电话:18971576700
技术人员Q Q:1039283927
维修中心地址:武汉洪山区街道口阜华大厦D座1203室 http://goo.gl/Kf1qd
[上海体检枪手,上海代人体检www.80tijian.com]
看不懂,还是收藏一下
[...] 《HTML5 Drag&Drop 拖拽、FileReader实例教程》 《HTML5 WebSockets 基础使用教程》 《HTML5和CSS3工具资源汇总》 《关于HTML 5 [...]
[格兰仕集团www.galanzlu.com/?ugoe22]在全球家电市场上取得的辉煌业绩为格兰仕赢来了百余项殊荣和相关上级部门的认可及表彰,获得“国家免检产品”,“中国名牌”,“中国驰名商标”,“全国用户满意企业”,“家电出口明星企业”,“全国质量效益型企业”等称号。
为什么不见更新呢。。
期待博主更多分享
[...] 《HTML5 Drag&Drop 拖拽、FileReader实例教程》 《HTML5 WebSockets 基础使用教程》 《HTML5和CSS3工具资源汇总》 《关于HTML 5 [...]
太给力!原来我已OUT许久了!
给力啊,果断收藏
[...] 《HTML5 Drag&Drop 拖拽、FileReader实例教程》 《HTML5 WebSockets 基础使用教程》 《关于HTML 5 canvas 的基础教程》 [...]
[...] 关于Drag&Drop拖拽事件,之前我写过一篇专门介绍的文章《给力的 Google HTML5 训练营(HTML5 Drag&Drop 拖拽、FileReader实例教程)》,那篇文章详细讲解了Drag & Drap事件的原理和代码实例,这里的拖拽上传实现原理基本上是一样的,大家有兴趣或不太了解的话可以先看看那篇文章,我在这里就不再过多啰嗦了~下面直接出拖拽上传简要代码实例: var oDragWrap = document.body; [...]
[...] 关于Drag&Drop拖拽事件,之前我写过一篇专门介绍的文章《给力的 Google HTML5 训练营(HTML5 Drag&Drop 拖拽、FileReader实例教程)》,那篇文章详细讲解了Drag & Drap事件的原理和代码实例,这里的拖拽上传实现原理基本上是一样的,大家有兴趣或不太了解的话可以先看看那篇文章,我在这里就不再过多啰嗦了~下面直接出拖拽上传简要代码实例: [...]
[...] 关于Drag&Drop拖拽事件,之前我写过一篇专门介绍的文章《给力的 Google HTML5 训练营(HTML5 Drag&Drop 拖拽、FileReader实例教程)》,那篇文章详细讲解了Drag & Drap事件的原理和代码实例,这里的拖拽上传实现原理基本上是一样的,大家有兴趣或不太了解的话可以先看看那篇文章,我在这里就不再过多啰嗦了~下面直接出拖拽上传简要代码实例: [...]
[...] 《HTML5 Drag&Drop 拖拽、FileReader实例教程》 《HTML5 WebSockets 基础使用教程》 《关于HTML 5 canvas 的基础教程》 [...]
通过搜索发现了这个不错的博客,赶紧收藏到书签,呵呵!
我要评论 >>