Web程序员们,你准备好迎接HTML5了吗?
HTML5作为下一代的web开发标准,其特性已经慢慢地出现在主流的浏览器中,这种新的HTML将会让浏览器不必再依赖Flash、QuickTime、Silverlight等插件,也简化了原来需要大量JS才能达到的效果。虽然HTML5还在讨论过程中,但是其优越的特性已经得到了大家的认可,各大浏览器厂商,一些知名的内容发布网站也都是积极地推动, 尤其是即将发布的IE9会完全支持HTML5。作为Web开发人员的我们,需要做的是:如何把HTML5转化为各种Web应用,如何做到现有的Web应用过渡到HTML5。下面将介绍作为Web开发人员必须知道的HTML5特性,以及各特性可能的应用场景。
1, 用Canvas绘制图形

不用怀疑,这张3D的图画就是用canvas画出来的。
Canvas的出现颠覆了传统在Web应用中画图的方式,传统的画图方式有在服务器端先画好图片,再把图片发到浏览器中,或者用Flash,还有用第三方插件。但是这些方法都不是原生的HTML, HTML5 canvas提供了通过javascript绘制图形的方法,方法简单但是功能强大,作为开发工程师可以使用canvas API随心所欲地控制图画。
点击这里查看canvas的API:Canvas API
创建一个canvas元素非常简单:
<canvas id="myCanvas" width="300" height="200">
你的浏览器是老古董了,不支持canvas,扔了吧.
</canvas>
点击这里查看一个canvas显示的HelloWorld:Canvas-HelloWorld
开发人员开发过程中需要注意的是:为了Javascript中能应用canvas对象,需要给元素设置ID;通常也要设置其高度和宽度;为了网站的友好性,需要给元素中添加不支持的文字说明,在不支持canvas的浏览器中给用户提醒。
Canvas是HTML5中最让人期待的特性之一,目前大部分的Web浏览器的支持(Chrome,Firefox,Safari,Opera支持,IE8不支持),canvas可以应用于游戏设计、增强图形用户界面。
下面是一些非常cool的Canvas应用:
非常cool的游戏应用:Best HTML5 Canvas Games
令人惊讶的canvas动画效果:8 Simply Amazing HTML5 Canvas and Javascript Animations
2,多媒体音频和视频
<audio>和<video>是首批添加到HEML5规范中的标记。它们的加入使得web浏览器能够以一种更方便的方式来处理音频和视频文件,结束了在web浏览器中安装播放插件的历史。比较令人头疼的是,各大浏览器厂商对音频和视频格式有重大的分歧,Firefox坚持将开放的ogg标准,而Safari则希望是MP3和MP4的标准,这就造成了我们开发过程中需要提供多个版本的音频和视频文件来兼容浏览器。
下图中可以看到各大浏览器和多媒体分享站点支持的格式:

目前浏览器对音频文件的支持情况:
| Format | IE8 | Firefox 3.6 | Opera 10.5 | Chrome 5.0 | Safari 5.0 |
| Ogg Vorbis | No | Yes | Yes | Yes | No |
| MP3 | No | No | No | Yes | Yes |
| Wav | No | Yes | Yes | No | Yes |
目前浏览器对视频文件的支持:
| Format | IE8 | Firefox 3.6 | Opera 10.5 | Chrome 5.0 | Safari 5.0 |
| Ogg | No | Yes | Yes | Yes | No |
| MPEG 4 | No | No | No | Yes | Yes |
点击这里查看audio和video的属性:HTML5 Audio HTML5 Video
创建audio和vedio元素:
<audio controls="controls">
<source src="song.ogg" type="audio/ogg" />
<source src="song.mp3" type="audio/mpeg" />
您的浏览器不支持音频标签!
</audio>
<video width="320" height="240" controls="controls">
<source src="movie.ogg" type="video/ogg" />
<source src="movie.mp4" type="video/mp4" />
您的浏览器不支持视频标签!
</video>
点击这里查看音频和视频标签在浏览器中的效果:Audio - Vedio
就开发者而言,目前的情况是,我们需要准备多个版本的音频和视频,并把文件路径都添加到audio和vedio中,web浏览器会跳过不支持的格式,另外,最好添加针对不支持audio和vedio的浏览器的文字提示或者其他多媒体播放方式。
Audio和Vedio是两个简单而强大的标签,目前国内外已经有多个多媒体分享网站开始支持或测试HTML5。
如下是一些HTML5 Vedio体验资源:
Google 联合 Arcade Fire 推出了一个 HTML5 互动电影: The Wilderness Downtown,点击这里可以进入其在 Chrome Experiment 的页面
HTML5 Video Player
YouTube - Broadcast Yourself(哦,对不起,这是个不存在的网站)
3,Web存储
随着Web应用的发展,需要在客户端存储的场景越来越多,传统的客户端存储方式有cookie、Firefox下有globalStorage、Flash在插件的支持下有其自己的存储方式,但是这几种方式都有其局限性(安全性和兼容性)。HTML5提供的在客户端存储方式有:Web Database和Web storage,Web Database适应与客户端复杂数据的存储,其标准还不成熟,浏览器的支持也很有限,需要Web开发人员进一步的关注,假如存储的是简单的数据,则可以使用Web storage方式,不占用带宽,并且得到了主流浏览器的支持,包括IE8。
Web存储有两种方式:localStorage和sessionStorage,参考这里查看详细定义,两者的区别简单来说,localStorage可以永久保存数据,也就是说关闭浏览器,下次打开浏览器还能取得存储的数据,而sessionStorage只在当前的会话中可用。
下面的例子演示统计用户访问网站的次数:
<script type="text/javascript">
if (typeof(localStorage) == "undefined") {
document.write("你的浏览器不支持Web存储");
} else {
if (localStorage.pagecount){
localStorage.pagecount=Number(localStorage.pagecount) +1;
}
else{
localStorage.pagecount=1;
}
document.write("您已经光临本站 "+ localStorage.pagecount + " 次了.");
}
</script>
点击这里查看运行效果:Demo
开发中需要注意的是,Web storage有安全方面的权限的,不要在其中存储私密的数据, 另外,这个存储的数据是不能跨浏览器读取的,也就是说用一种浏览器打开站点保存的数据,用其他浏览器是取不到的。
尽管Web存储有这样的缺陷,但是这个特性使得应用程序在离线状态下也可以正常工作,当程序需要处理大量的数据时,可以避免数据频繁地在客户端和服务器端的往来,对移动设备来说,可以极大地减少流量的消耗。
这里有一篇很好的文章介绍Web存储:Web Storage全解析
4,其他的简化了开发的HTML5特性
- 一些常用输入类型:Email,url,number,date pickers等
- 一些标准属性:contenteditable 等
- 一些input属性:placeholder,required,autofocus,min,max,step,
这里推荐两篇介绍这些HTML5特性的文章,请参考:你必须知道的28个HTML5特征、窍门和技术和给网页设计师的30个HTML5学习资源
以上这些HTML5特性是目前浏览器支持较好的特性,也是关注度非常高的HTML5特性,本文是从一个Web开发人员的角度来理解HTML5,目的是希望有更多的Web开发人员能尽快地融入HTML5的开发中来,最近优酷已经开始应用HTML5和HTTP Live Streaming技术,让更多的用户可以在移动平台分享多媒体,这对国内的HTML5的推广起到了积极的作用,微软承诺IE9将全面支持HTML5,这对HTML5的推广是一个振奋人心的消息。可以预见,未来几年HTML5将快速地发展,作为Web开发人员,我们更应该尽快熟悉HTML5的各种特性,在项目开发过程中也应该更多考虑如何利用HTML5的特性加强web应用程序的易用性和可移植性。
Web程序员们,你准备好迎接HTML5了吗?的更多相关文章
- Web程序员开发App系列 - 认识HBuilder
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- 【Web探索之旅】第四部分:Web程序员
内容简介 1.第四部分第一课:什么是Web程序员? 2.第四部分第二课:如何成为Web程序员? 3.第四部分第三课:成为优秀Web程序员的秘诀 第四部分:Web程序员(完结篇) 大家好.终于来到了[W ...
- Web程序员必备的CSS工具
对于web开发来说,CSS是最有效的美化页面.设置页面布局的技术.但问题是,CSS是一种标记性语言,语法结构非常的松散.不严谨.WEB程序员会经常发现自己的或别人的CSS文件里有大量的冗余代码或错误或 ...
- 微信小程序将带来web程序员的春天!
微信之父张小龙在年初那次演讲中曾表示:“我自己是很多年的程序员,我觉得我们应该为开发的团体做一些事情.”几个月后,微信正式推出微信应用号(即微信小程序)在互联网中掀起又一波热潮. 过去,对于很多开发者 ...
- .NET WEB程序员需要掌握的技能
本来这个是我给我们公司入职的新人做一个参考,由于 @张善友 老师在他的微信号转了我的这篇文章<<.Net WEB 程序员需要掌握的技能>>,很多人觉得比较有用,说是看了后知道一 ...
- Web程序员开发App系列 - 开发我的第一个App,源码下载
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- Web程序员开发App系列 - 调试Android和IOS手机代码(补图)
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- Web程序员开发App系列 - 申请苹果开发者账号
Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...
- Web程序员最常用的11款PHP框架
PHP框架是Web程序员和开发人员最为有用的工具. PHP框架可以帮助用户更快地开发项目. 今天我将为开发人员带来几款最好的PHP框架,希望能对你有用. 1.Agavi Agavi是一款强大的,可扩展 ...
- 深圳尚学堂:Web程序员应该会的知识
互联网的行业里涌入了很多的程序员, 都在为互联网的发展添砖加瓦.程序员可以分为很多种,像Unix程序员.Windows程序员,或是C++程序员.Delphi程序员,等等.今天我们谈谈Web程序员,一名 ...
随机推荐
- IDEA上传项目至git
今天来分享一下从idea上传项目至coding的过程. 本文基于windows系统. idea提供了很方便的控制git的界面化操作,除了安装git和一些必要的配置之外,用到命令行的地方会非常少. 1: ...
- 大数据学习系列之二 ----- HBase环境搭建(单机)
引言 在上一篇中搭建了Hadoop的单机环境,这一篇则搭建HBase的单机环境 环境准备 1,服务器选择 阿里云服务器:入门型(按量付费) 操作系统:linux CentOS 6.8 Cpu:1核 内 ...
- google开源服务器apprtc的搭建
本文参考网帖: http://www.jianshu.com/p/c55ecf5a3fcf http://io.diveinedu.com/2015/02/05/%E7%AC%AC%E5%85%AD% ...
- kubernetes入门实践
k8s中文文档 k8s概念比较多,有什么概念的疑惑的推荐看k8s中文文档. me的环境 操作系统:centos7 docker:1.12.6 环境跟me的不一致?不要慌,基本大部分操作都是行的通的. ...
- oralce11g导出dmp然后导入Oracle10g
一次Oracle11g数据库导入 Oracle10g数据库操作笔记 11g备份导入10g的时候会抛错直接阻止导入. 但是有时候还必须得把11g的数据库导入到10g我今天就遇到了这种情况. 一开始 ...
- extjs 关于dom操作的几个库
经过几天的学习研究,发现ext与jquery的设计思路完全是来自两个方向. jquery是内聚,把所有东西都放在$的下面,而ext是采用分模块的设计思路,每个功能封装一个库.这样就形成了各自的实用风格 ...
- 有关JS控制时间的几个小Demo
一.Document自带的定时和延时方法: 循环运行:var timeid = window.setInterval("方法名或方法"."延时");windo ...
- angular封装七牛云图片上传,解决同一页面多个上传按钮分别上传
step1:引入文件 引入Plupload *该SDK上传功能集于Plupload插件封装,所以需要下载Plupload; plupload.dev.js 引入qiniu.js为了简便,当时直接从官网 ...
- 自学WPF之XAML(一)概念
此笔记仅为学习过程中的一些总结,若有不妥之处,请指出,以便更正.下面直接进入正题. XAML:是一种设计UI的标签语言,是XML的派生语言,所以很多XML中的概念语法在XAML中均适用.在XAML标签 ...
- Base64转换二进制文件对象 Blob/Base64转换 File 对象
function convertBase64UrlToBlob(urlData) { var arr = dataurl.split(','),//去掉url的头,并转换为byte type = ar ...