现今我们能用 html5 吗,能用它做些什么呢,是否真的是 flash杀手?想必你也注意到了这些日渐增长且常被问起的类似问题,被讨论着,甚至被回答过。在我看来,你必须自己回答这些基本的问题。
这篇文章的本意是想帮你通过一些基本指南的学习,以轻松学习代码模板。一旦你熟悉了这些基本,并想更进一学习,你还将会找到更多提供了建议、技巧和技术的有用资源。
html 5 特性官方详细的文档是寻找 html5 特性的最好地方,当然你还可以轻松通过 w3schools 来学习html5 标签。我们将会在文章中涉及到以下的特性:
语义化标记form 表单增强功能视频 / 音频画布(canvas)可编辑内容拖放稳健的数据存储检测浏览器支持在你开始尝试 html5之前,需要知道各主流浏览器的支持状况。这些有用的资源,将可以帮助你向着正轨走:
何时能用网页设计师的浏览器支持列表html5 测试布局引擎对比你还可以运行 javascript(用javascript 检测浏览器特性)来检测 html5 特性的支持。你还应该用用modernizr: 一个非常不错的检测 html5/css3 本地支持的 javascript 库。如果你选择用 mootools可以使用moomodernizr (mootools port of modernizr)。
你可能也会想留意不断变化的浏览器市场份额分享 — 这些信息对于你决定用何种解决或折衷的方法将会是非常必要的。
值得注意的变更点除了新的特征,你还应该记下这些重要的变更点:
简洁的 doctype html5 只需一个简洁的文档类型:。它有意不使用版本,因此文档将会适用所有版本的html。简单易记的语言标签 你并不需要在 中使用 xmlns 或 xml:lang 标记。 将对 html5 有效。简单易记的编码类型 你现在可以在 meta 标签中使用 charset:不需要闭合标签 在 html5 中,空标签(如:br、img 和 input )并不需要闭合标签。废弃的标签 下面这些标签并不被 html5 支持:、、、、、、、、、、、、、 和
简单代码示例:
html5 document
你可以使用html5 validator 或 w3c markup validation service 来测试你的 html5 文档。
语义化标记html5 新增的一些新标签除了不仅仅是更具语义的
标签的替代品,并不提供额外的功能。这些都是新增的标签:>、、、、, 、、、、 和figcaption>。
这些标签被除了ie 外的所有现代浏览器(firefox 3+、safari 3.1+、chrome 2+、and opera 9.6+)支持。javascript 提供了document.createelement(tagname) 的方法,让你可以用来创建新的 html5 标签。代替自己创建这些元素,你还可以用html5 enabling script 或 ie print protector — 这些脚本将帮助 ie 正常处理 html5 元素的渲染。
你可能会想到添加 css reset 到这些新元素上。这里是一些可以用在你以 html5 为基础的项目的css reset:
html5 reset cssreset5简单代码示例: 兼容 ie 的 html5 页面布局
html5 semantic markup demo: cross browser
page header
page sub heading
home
projects
portfolio
profile
contact
article heading
may 5th, 2010
lorem ipsum dolor sit amet, consectetur adipiscing elit.
section heading
ut sapien enim, porttitor id feugiat non, ultrices non odio.
section footer: pellentesque volutpat, leo nec auctor euismod
section heading
lorem ipsum dolor sit amet, consectetur adipiscing elit.
figcaption: club, heart, spade and diamond
ut sapien enim, porttitor id feugiat non, ultrices non odio
section footer: pellentesque volutpat, leo nec auctor euismod est.
article footer
siderbar heading
ut sapien enim, porttitor id feugiat non, ultrices non odio.
page footer
注意:没有一个 div 标签,id 或 class 属性被使用到 — 简洁、小巧和更语义化的标记 (view demo)。你仍可以用 html5 validator 或 w3c markup validation service 来检测你的 html5 文档。
注意:这个示例在 ie6 下并未正常显示。这只是因为我使用 css child combinators 来避免使用额外的 class。你可以在 ie6 下用自己的 css ,像其他浏览器一样处理 html5 标记。
不用脚本实现 ie 对 html5 样式控制表单增强html5 为表单提供了几个新的属性、input 类型和标签。到目前为止,只有 opera 对html5 有比较好的支持。你因此应该下载 opera 来查看大部分新特性如何工作。
新的input类型
color, email, date, month, week, time, datetime, datetime-local, number, range, search, tel, 和 url新属性
required, autofocus, pattern, list, autocomplete 和 placeholder新元素
, , , 和 值得高兴的是尽管支持有限,使用这些特性也是个不错的选择。因为新的 input 类型会漂亮地降级为 text 类 input(译注:input 的默认 type 为 text)。且记住现今你仍可以折衷使用 javascript 控制表单(这个技巧是指首先检测浏览器自身支持,然后才是使用折衷方法)。
简单代码示例:列出一些今天你可以拿来测试的新特性
new attributes
required:
works in opera & chrome
autofocus:
works in opera, chrome & safari
placeholder:
works in chrome & safari
input pattern:
works in opera & chrome
multiple files:
works in chrome, safari & firefox
list:
works in opera
new input types
email:
works in opera
url:
works in opera
number:
works in opera
range:
works in opera, chrome & safari
time:
works in opera
date:
works in opera
month:
works in opera
week:
works in opera
datetime:
works in opera
submit
在我们的 demo 中的出现的特性,都顺利地运行在 opera 上,但你仍需要使用 chrome 或 safari 来看其他小部分功能的实际运行状态(view demo)。
不需要插件的视频和音频html5 对视频和音频特性规范文档的制定是被讨论最多的。除浏览器自带支持的明显好处外,评论点集中在浏览器提供商对音频/视频格式的不同选择。如果你准备使用html5的 和 ,使你熟悉下面这些视频/音频的解码器和浏览器支持是非常重要的:
音频: ogg (ogg, oga), mp3, wav, aac视频: ogg (ogv), h.264 (mp4)另外你还需要留意一下 google 的 vp8 视频解码,这个将被作为一个开源格式来结束(格式选择的)纷争。html5 提供的一个解决方案是,让你可以指定多个不同格式的源文件,以便于用户浏览器选择它认识的文件。对于
当你第一次尝试 html5 的音频/视频,你可能会想知道这些可能对你有帮助的东东:
你的服务器必须支持你打算提供的音频/视频的 mime 格式。你将需要检查一下其在本地服务器上是否被支持。如果你使用 safari 来检测 html5 的音频/视频支持,需要安装 quicktime player,没有quicktime player 的 safari 什么都不能播放。简单代码示例:音频标记 (view demo)
简单代码示例:视频标记 (view demo)
记得加上type,不然,即使格式对了,也可能播放不了
尽管相对于要依赖第三方插件已经迈了一大步,但上面提供的示例,只是一个开始。由于各个浏览都提供了不同外观的控制栏,你可能会希望改变他们以适应你的设计。看看下面例子如何利用 dom api 来创造一个属于你自己的自定义控制栏。
简单代码示例:拥有自定义控制栏的视频 (view demo)
play |
pause |
sound on/off
你还可以利用 dom api 来为音频/视频做更多。而且如果你乐意添加一些其他的东西,将会把这个带向一个完全不同的级别。例如,你可以把视频放到了 html5 canvas 元素中。这将会允许你读取一个视频的像素数据、控制、和帧,并做一些你想做的好玩的东东。
基于 javascript 的 2d 绘画html5 中最让人兴奋的特性是 — 那个用来作画的东东。在你的页面中插入 canvas 就像插入其他标记一样平常,但你将需要一些编程的经验来绘制形状、图表、动画、游戏、图片作品等。
在除 ie 外的所有现代浏览器(firefox 3, safari 3.1, chrome 2, and opera 9.6)都支持 canvas。你可以使用 explorercanvas 这个 javascript 解决方案来为 ie 添加这个新特性。
简单示例代码: 基于指令的 html5 canvas 2d 绘画 (view demo)
html5 canvas demo
html5 canvas demo
fallback content, in case the browser does not support canvas.
works in firefox 3+, safari 3.1+, chrome 2+ and opera 9.6+)
让内容可编辑如果你想让页面的某个地方,允许用户编辑页面,所有的你需要做的事就是添加 contenteditable 属性到父容器中。你可能曾在 wysiwyg 编辑器中看过。这个属性是 html5 的一部分,且它几乎被所有主流浏览器支持(internet explorer 5.5+, firefox 3+, safari 3.1+, chrome 2+, and opera 9.6+):
值得注意的是设置 contenteditable=true 只是允许用户编辑、删除、插入内容,并不会自动提供其他类似于 wysiwyg 编辑器的保存或应用样式的功能。你将需要自己用 javascript 来添加这些功能。
简单示例代码: 有加粗、倾斜和下划线功能的基本编辑器 (view demo)
html5 contenteditable demo
html5 contenteditable demo
[bold]
[italic]
[underline]
html5 standardized content editing
thanks to microsoft; html elements are editable since internet explorer 5.5....
to edit just start typing. to change style, select text and click on links in the tools bar.
拖放html5 的拖放将会把与用户交互带向别一个等级,并将会对你如何设计用户交互产生重大影响。现今,firefox 3.5+ 已经对此特性提供了最大化的支持,其他浏览还只是保守地支持了一小部分(opera 完全不支持)。不幸的是根据现阶段浏览器提供商的执行状况,你将需要依赖大量的 javascript 和 css 来让做跨浏览器支持。
注意:
图片和超链接默认是可拖放的。对于所有的元素,html5 引进了一个新的属性draggable,这将用来设置元素是否接受拖放;下列事件对应 html5 的拖放:dragstart, drag, dragenter, dragover, dragleave, drop 和 dragend。当你要fire掉事件的时候,将需要写 function (事件处理器) 来处理你需要的,也可能需要给元素绑定事件或做事件指派来简化你的代码;拖放事件还让你可以通过被拖放元素来传递数据,使用事件属性datatransfer 的 getdata 和 setdata 方法。你可以在不同的浏览器或程序中进行拖放。简单代码示例: 将图片拖放到另一个窗口 (