HTML5总结
前些天看了IT最新动向,发现HTML5发展非常之快,所以这两天花了些时间学了一下,在网上查到的东西一般都很琐碎,我在这里稍微整理一下。
起步
首先,先了解一下HTML5的发展起步。
HTML5是W3C和WHATWG合作的结果。
注: W3C 指 World Wide Web Consortium,万维网联盟。
WHATWG 指 Web Hypertext Application Technology Working Group。网络超文本应用技术工作组
他们对HTML5建立了一些规则:
? 新特性应该基于HTML、CSS、DOM以及JavaScript
? 减少对外部插件的需求(比如Flash)
? 更优秀的错误处理
? 更多取代脚本的标记
? HTML5应该独立于设备
? 开发进程应该对公众透明
HTML5中一些有趣的新特性:
? 用于绘画的canvas元素
? 用于媒介回放的video和audio元素
? 对本地离线存储的更好的支持
? 新的特殊内容元素,比如article、footer、header、nav、section
? 新的表单控件,比如:calendar、date、time、email、url、search
最新版本的Safari、Chrome(谷歌浏览器)、Firefox以及Opera支持某些HTML5特性,IE9将支持某些特性。
Web视频
现如今,大多数的视频都是插件(比如Flash)来显示的,但是并非所有的浏览器都拥有同样的插件。HTML5规定了一种通过video元素来包含视频的标准方法(不需要插件的哦!!!强大吧)
当前,video元素支持三种视频格式:Ogg、MPEG4、WebM
在HTML5中显示视频,您所需的只是这样写:
<video src="movie.ogg" controls="controls">
您的浏览器不支持该功能!
</video>
<video> 与 </video> 之间插入的内容是供不支持 video 元素的浏览器显示的。 video 元素允许多个 source 元素。source 元素可以链接不同的视频文件。浏览器将使用第一个可识别的格式:
<video width="320" height="240" controls="controls">
<source src="movie.ogg" type="video/ogg">
<source src="movie.mp4" type="video/mp4">
您的浏览器不支持该功能!
</video>
<video>标签的属性
Web音频
和视频一样,大多数音频都需要插件(比如Flash)才能播放,HTML5规定了一种通过audio元素来包含音频的标准方法。Audio元素能够播放声音文件或者音频流。
Audio元素支持三种音频格式:Ogg Vorbis、MP3、Wav
使用方法和video标签的方法一摸一样,超像的!
<audion>标签的属性
Canvas(在网页上绘制图形)
HTML5的canvas元素使用Javascript在网页上绘制图形。
画布是一个矩形区域,您可以控制其每一像素
Canvas拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
向HTML5中添加canvas元素,方法如下:
<canvas id="myCanvas" width="200" height="100"></canvas>
另外需要声明的是canvas元素本身没有绘图能力,所有的绘制工作必须在JavaScript内部完成。
现在绘制一个红色的矩形,如下:
<script type="text/javascript">
var c=document.getElementById("myCanvas");
var cxt=c.getContext("2d");
cxt.fillStyle="#FF0000";
cxt.fillRect(0,0,150,75);
</script>
现在对这段代码进行解析:
JavaScript使用id寻找canvas元素
var c=document.getElementById("myCanvas");
然后,创建context对象
var cxt=c.getContext("2d");
getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
下面的两行代码绘制一个红色的矩形:
cxt.fillStyle="#FF0000";
cxt.fillRect(0,0,150,75);
fillStyle 方法将其染成红色,fillRect 方法规定了形状、位置和尺寸。
想看更多例子,请上W3School的HTML5课程!
在客户端存储数据
HTML5的这个功能是让我感到最不可思议的,HTML5提供了两种在客户端存储数据的新方法
? localStorage - 没有时间限制的数据存储
? sessionStorage - 针对一个 session 的数据存储
之前,这些存储工作都是由cookie完成的,现在cookie看来要换人了,cookie不适合存储大量的数据,因为它们由每个对服务器的请求来传递,这使得cookie的速度慢而且效率低。
在H5中数据不是由每个服务器请求传递的,而是只有在请求时使用数据,他使在不影响网站性能的情况下,存储大量数据成为可能。
对于不同的网站,数据存储在不同的区域,而且一个网站只能访问其自身的数据。 H5使用JavaScript存储和访问数据。发现了没,H5的很多功能都需要利用JS来实现,呵呵,看来还是离不了Java
现在,首先介绍第一种存储方式,localStorage
localStorage 方法存储的数据没有时间限制。第二天、第二周或下一年之后,数据依然可用。
创建和访问localStorage
<script type="text/javascript">
localStorage.lastname="Smith";
document.write(localStorage.lastname);
</script>
这样就OK了,是不是很简单哈!
第二个,sessionStorage
sessionStorage 方法针对一个 session 进行数据存储。当用户关闭浏览器窗口后,数据会被删除。创建和访问sessionStorage的方法和localStorage的差不多一样,只是名称不一样,效果不一样而已。
<script type="text/javascript">
sessionStorage.lastname="Smith";
document.write(sessionStorage.lastname);
</script>
HTML5新的Input类型
H5拥有多个新的表单输入类型,这些新特性提供了更好的输入控制和验证。
现在介绍的输入类型有以下几种:
url
number
range
Date pickers (date, month, week, time, datetime, datetime-local)
search
color
看张截图
Email类型用于应该包含email地址的输入域,在提交表单时,会自动验证email域的值。 E-mail: <input type="email" name="user_email" />
是不是很简单,就跟HTML的普通标签是一样的。
URL
Url的用法好Email的一样,用于包含Url地址的输入域,在提交表单时,会自动验证url域的值。
Number
number 类型用于应该包含数值的输入域。
您还能够设定对所接受的数字的限定:
Points: <input type="number" name="points" min="1" max="10" />
这个应该不用解释了吧
Number的属性如下
Range
range 类型用于应该包含一定范围内数字值的输入域。
range 类型显示为滑动条。
您还能够设定对所接受的数字的限定:
<input type="range" name="points" min="1" max="10" />
Range的属性和number的是一样的,相互借鉴以下就OK了
Date Pickers(数据检出器)
HTML5 拥有多个可供选取日期和时间的新输入类型:
date - 选取日、月、年
month - 选取月、年
week - 选取周和年
time - 选取时间(小时和分钟)
datetime - 选取时间、日、月、年(UTC 时间)
datetime-local - 选取时间、日、月、年(本地时间)
下面的例子允许您从日历中选取一个日期:
Date: <input type="date" name="user_date" />
MyGod!我现在才发现文笔不好的时候,文字显得是那么的苍白,我实在是描绘不出H5的效果,实在是太炫了,还是亲自试一下就知道了,在这里我表示很无力……
search
search 类型用于搜索域,比如站点搜索或 Google 搜索。
search 域显示为常规的文本域。
HTML5新的表单元素
HTML5 拥有若干涉及表单的元素和属性。
datalist
keygen
output
datalist 元素
datalist 元素规定输入域的选项列表。
列表是通过 datalist 内的 option 元素创建的。
如需把 datalist 绑定到输入域,请用输入域的 list 属性引用 datalist 的 id: Webpage: <input type="url" list="url_list" name="link" />
<datalist id="url_list">
<option label="W3School" value="http://www.W3S" />
<option label="Google" value="" />
<option label="Microsoft" value="" />
</datalist>
其最终效果就像是百度中的搜索下拉框一样,想象以下。
keygen 元素
keygen 元素的作用是提供一种验证用户的可靠方法。
keygen 元素是密钥对生成器(key-pair generator)。当提交表单时,会生成两个键,一个是私钥,一个公钥。
私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可用于之后验证用户的客户端证书(client certificate)。
目前,浏览器对此元素的糟糕的支持度不足以使其成为一种有用的安全标准。 <form action="demo_form.asp" method="get">
Username: <input type="text" name="usr_name" />
Encryption: <keygen name="security" />
<input type="submit" />
</form>
以上关于keygen的用法我是全盘复制,因为我看不懂他是什么意思,想着可能也不会用了。
output 元素
output 元素用于不同类型的输出,比如计算或脚本输出:
<output id="result" onforminput="resCalc()"></output>
其效果就像是动态计算器,你直接输入数字,结果立马就会发生变化,神吧
还有一些H5的新的表单属性,实在是太多了,我写不下去了,呵呵,等用到的时候,再搜,我觉得这是一个不错的学习方法,可以加深印象。
Web技术的发展速度太快了,如果你不与时俱进,就会被淘汰。因此,为了应对即将到来的HTML5,本文总结了22个HTML5的初级技巧,希望能对你进一步学习好HTML5会有所帮助。
1. 新的Doctype声明
XHTML的声明太长了,我相信很少会有前端开发人员能手写出这个Doctype声明。 1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2">
HTML5的Doctype声明很短,看到这个声明相信你马上就能记住,不用浪费脑细胞去记那长的有点变态的XHTML的Doctype声明了。
1<!DOCTYPE html>
HTML5的简短的DOCTYPE声明是让Firefox、Chrome等现代浏览器和IE6/7/8等浏览器都进入(准)标准模式,你可能会奇怪 IE6/7居然也可以支持HTML5 Doctype,事实上,IE是只要doctype符合 这种格式,都会进入标准模式。
2. <figure>标签
看看下面一段简单的代码:
1<img src="path/to/image" alt="About image">
2<h6>Image of Mars.</h6>
遗憾的是,这里的h6标签和img标签好像没有什么关系,语义不够明确。HTML5意识到了这一点,于是就采用了<figure>标签。当<figure>结合<figcaption>标签的使用,可以让h6标签和img标签组合起来,代码就更具语义化了。
1<figure>
2 <img src="path/to/image" alt="About image">
3<figcaption>
4<h6>This is an image of something interesting. </h6>
5</figcaption>
6</figure>
3. 重新定义<small>
不久前,我使用了<small>标签来创建与logo相关的副标题。但是在HTML5中重新定义了<small>标签,使之更能表现语义化,在<small>的字号都会变小,想想如果这个标签用于网站的底部的版权信息还是个不错的做法。
4. 去掉了Javascript和CSS标签的type属性
通常你会在<link>和<script>加上type属性:
1<link rel="stylesheet" href="path/to/stylesheet.css" type="text/css">
2 <script type="text/javascript" src="path/to/script."></script>
在HTML5中,不再需要type属性了,因为这显得有点多余,去掉之后可以让代码更为简洁。
1<link href="path/to/stylesheet.css">
2 <script src="path/to/script.js"></script>
5. 是否使用双引号
这有点让人纠结,HTML5并不是XTHML,你可以省去标签中的双引号。相信大多数同志也包括我都习惯了加上双引号,因为这让代码看起来会更标准。不过,这可以根据你的个人喜好来确定是到底要不要双引号。
1<h6 class="myClass" id="someId"> Start the reactor. </h6>
6. 使网页内容可以编辑
这是HTML5新增的一个功能,在标签中加上一个contenteditable属性,并且设置值为true,就可以直接在页面上编辑这个标签的内容,包括这个标签的子级标签的内容。有了这个属性,你可以利用这个属性完成很多事,比如在网页中编辑一个待办事项的清单。
1<h6 contenteditable="true">Break mechanical cab <span>driver</span></h6>
7. 电子邮件输入框
HMTL5中新增了一个输入框的电子邮件属性,可以检测输入的内容是否符合电子邮件的书写格式,功能越来越强大了吧,在HTML5之前只能依靠JS来检测。虽然内置的表单验证功能很快就会成为现实,但这个属性很多浏览器都还不支持,只会当作普通的文本输入框来处理。
1<form method="get">
2 <label for="email">Email:</label>
3<input id="email" name="email" type="email">
4 <button> Submit Form </button>
5</form>
到目前为止,包括现代浏览器在内都不支持该属性,所以这个属性暂时还是靠不住的。
8. 占位符
文本框中的占位符(看看本博的搜索框效果)有利于提升用户体验,之前,我们只能依靠JS来实现占位符的效果,在HTML5中新增了占位符属性placeholder。
1<input name="email" placeholder="doug@givethesepeopleair.com" type="email">
同样,目前的主流现代浏览器对该属性的支持不大好,暂时只有Chrome和Safari支持该属性,Firefox和Opera不支持该属性。
9.
HTML5的本地存储功能,可以让现代浏览器“记住”我们输入的,就算浏览器关闭和刷新也不会受影响。虽然这个功能有些浏览器不支持,但是IE8, Safari 4, 还有 Firefox 3.5还是支持这个功能的,你可以测试下。
10. 更有语义的header和footer
下面的代码在HTML5中将不复存在
1<div id="header">
2 ...
3</div>
4<div id="footer">
5 ...
6</div>
通常我们都会给header和footer定义一个div,然后再添加一个id,但是在HTML5中可以直接使用<header>和<footer>标签,所以可以将上面的代码改写成:
1<header>
2 ...
3</header>
4<footer>
5 ...
6</footer>
要注意不要将这两个标签和网站的头部和页脚混淆起来,它们只是代表它们的容器。
11. IE对HTML5的支持
IE浏览器目前对HTML5的支持并不好,也是阻碍HTML5的更快普及的一大绊脚石,不过,IE9对HTML5的支持度还是很不错的。
IE把HTML5新增的标签都解析成内联元素,而实际上它们是块级元素,所以有必要为它们定义一个样式:
1header, footer, article, section, nav, menu, hgroup {
2 display: block;
3}
尽管如此,IE还是不能解析这些新增的HTML5标签,这个时候就需要借助Javascript来解决这个问题:
1document.create_rElement_x("article");
2document.create_rElement_x("footer");
3document.create_rElement_x("header");
4document.create_rElement_x("hgroup");
5document.create_rElement_x("nav");
6document.create_rElement_x("menu");
你可以借助这一段Javascript代码来修复IE更好的解析HTML5
1<!-->
2 <script mce_src="></script>
3 <![endif]-->
12. 标题群( hgroup)
这个类似于第二点技巧。如果用h1和h2标签分别表示网站的名称和副标题,但这会让两个本义上密切相关的标题并没有关联起来。这个时候可以使用<hgroup>标签将它们组合起来,这样代码会更有语义。
1<header>
2<hgroup>
3<h1> Recall Fan Page </h1>
4<h2> Only for people who want the memory of a lifetime. </h2>
5</hgroup>
6</header>
13. 必填项属性
前端人员肯定做过不少表单验证的项目,其中很重要的一点就是有些输入框的内容是必须填写的,这里就需要使用Javascript来检查。在 HTML5中,新增了一个“必须填写”的属性:required。required属性有两种使用方法,第二种方法显得更有结构性,而第一种更简洁。
1<input type="text" name="someInput" required>
1<input type="text" name="someInput" required="required">
有了这个属性,使表单的提交验证变得更简单了,看看下面简单的例子:
1<form method="post">
2 <label for="someInput"> Your Name: </label>
3<input id="someInput" name="someInput" placeholder="Douglas Quaid"
required="required" type="text">
4 <button>Go</button>
5</form>
如果输入框为空,表单将无法提交成功。
14. 自动获取焦点
同样的,HTML5也不再需要Javascript来解决输入框的自动获取焦点,如果某个输入框应当被选择或是获取到输入焦点,HTML5新增了自动获取焦点属性autofocus:
1<input name="someInput" placeholder="Douglas Quaid" required="required"
type="text">
autofocus也同样可以写成”autofocus=autofocus”,这样看起来标准些,这个根据自己的个人喜好而定。
15. 音频播放的支持
HTML5中提供了<audio>标签,解决了以往必须依靠第三方插件才能播放音频文件的问题。目前为止,还只有少数的最新浏览器支持该标签。
1<audio tabindex="0" controls="controls">
2 <source src="file.ogg">
3 <source src="file.mp3">
4 <a href="file.mp3">Download this file.</a>
5</audio>
为什么会有两种格式的音频文件?因为Firefox和Webkit浏览器所支持的格式存在差异,Firefox只能支持.ogg文件,而 Webkit只支持.mp3的文件,解决的办法就是创建两个版本的音频文件,这样就可以兼容Firefox和Webkit的浏览器了,需要注意的是IE不支持该标签。
16. 视频播放的支持
和<audio>标签一样,HTML5也提供了<video>标签对播放视频文件的支持。YouTube也宣布了一项新的 HTML5的视频嵌入。不过有点遗憾,HTML5的规范并没有指定特定的视频解码器,而是让浏览器自己来决定。这就造成了个浏览器的兼容问题,虽然 Safari和IE9都支持还H.264格式的视频( Flash 播放器可以可以播放),Firefox和Opera则支持开源的Theora和Vorbis格式。因此,当显示HTML5视频的时候,也得准备2种格式。
1<video tabindex="0" controls="controls" preload="">
2 <source src="cohagenPhoneCall.ogv" type="video/ogg; codecs='vorbis, theora'"> 3 <source src="cohagenPhoneCall.mp4" type="video/mp4; 'codecs='avc1.42E01E, mp4a.40.2'">
4<div> Your browser is old. <a href="cohagenPhoneCall.mp4">Download this video instead.</a> </div>
5
6</video>
需要注意的是,type属性虽然可以省略掉,但是如果加上的话,浏览器就可以更快的准确的解析该视频文件。并不是所有的浏览器都支持HTML5的视频,所以得做好使用Flash版本来代替,当然,这个决定权在于你。
17. 预加载视频
预加载属性:preload,首先要确定是否需要预先加载视频,假如,访客在访问一个有很多视频展示的页面,那么就有必要预先加载一段视频,这样可以节省访客的等待时间,提高用户体验。你可以给<video>标签添加一个preload属性来实现预先加载的功能。
1<video tabindex="0" preload="preload">
2 ...
3</video>
18. 显示控件 显示控件属性可以给视频添加一个播放暂停的控件,需要注意的是每个浏览器显示的效果可能会有些差异。
1<video tabindex="0" preload="preload" controls="controls">
2...
3</video>
19. 使用正则表达式
在HTML5中,我们可以直接使用正则表达式。
1<form action="" method="post">
2 <label for="username">Create a Username: </label>
3<input name="username" id="username" placeholder="4 <> 10" pattern="[A-Za-z]{4,10}" required="required" type="text">
4 <button type="submit">Go </button>
5</form>
20. 检测浏览器对HTML5属性的支持
由于各浏览器对HTML5属性的支持度不同,这就造成了一些兼容问题。但是可以使用方法来检测该浏览器是否支持这些属性,上例中的代码如果要检测pattern属性是否被浏览器识别,可以使用Javascript代码来检测。
1alert( 'pattern' in document.create_rElement_x('input') ) // boolean;
其实这是确定浏览器兼容常用的方法,jQuery库就经常使用这种方法。上面的代码中创建了一个input标签,并检测pattern属性是否被浏览器支持,如果能支持的话,浏览器就支持这个功能,否则就不支持。
1<script>
2 if (!'pattern' in document.create_rElement_x('input') ) {
3 // do client/server side validation
4 }
5</script>
21. Mark标签
<mark>标签用于高亮显示那些需要在视觉上向用户突出其重要性的文字,包裹在此标签里的字符串必须与用户当前的行为相关。例如,如果我在一些博客中搜索“Open your Mind” ,我可以使用在<mark>标签里使用JavaScript 来包裹每一次动作。
1<h3> Search Results </h3>
2<h6> They were interrupted, just after Quato said, <mark>"Open your Mind"</mark>. </h6>
22. 该如何正确的使用div标签
有些人可能会有疑问,有了<header>和<footer>等这些标签,<div>标签在HTML5中还有用吗?答案是肯定的,比如你想创建一个能包裹特殊内容的容器自由灵活的<div>肯定是首选,而你要创建一篇文章或者一个导航菜单,建议你使用更有语义的<article>和<nav>标签。 很多人认为HTML5可能还是很遥远的事,所以直接无视,其实不然,现在很多网站都已经开始使用HTML5了,事实上,HTML5的一些新增属性和功能是让代码变得更简洁,这总
归是一件好事,应该值得我们推崇。最后感谢你阅读了这篇HTML5的入门级文章,希望能为你进一步学习HTML5提供一些帮助。
教学管理工作头绪多事务烦杂,我们也清醒的认识到教学工作无小事,稍有疏忽大意就有可能给教师和学院带来很大的损失,我们深感责任重大,因…
为了更好的贯彻落实《唐山市人民政府关于进一步加强就业再就业工作的通知》,市劳动局、市妇联等11个单位联合下发了《关于贯彻落实市政府…
见习,是一种期待,是对自己成长的期待,是对自己角色开始转换;见习,也有一份惶恐,有对自己缺乏信心的不安,有对自己无法适应新环境的担…
初级职称工作总结四年的时间很快过去了,在四年里,我在公司领导及同事们的关心与帮助下圆满的完成了各项工作,自身素质、能力也得到了一定…
中国二冶中国二冶邯钢工程技术质量工作总结中国二冶邯钢工程项目部二00七年十二月一日20xx年是中国二冶跌荡起伏波澜壮阔的一年。一年…