深入剖析 HTML5

深入剖析 HTML5

HTML5,相信大家对这个名词已经不再陌生了。HTML5 是近十年来 Web 标准最巨大的飞跃。和以前的版本不同,HTML5 并非仅仅用来表示 Web 内容,它的目标是将 Web 带入一个成熟的应用平台,在这个平台上,视频、音频、图象、动画,以及同电脑的交互都被标准化。尽管 HTML5 的实现还有很长的路要走,但 HTML5 正在改变 Web。

作为新一代的 HTML 标准,HTML5 不仅强化了 Web 网页的表现性能,还追加了本地数据库等 Web 应用的功能。虽然 HTML5 标准仍处于完善之中。然而,大部分新版本的浏览器已经能够支持某些 HTML5 的功能了。HTML5 标准所描述的功能非常强大,如:它提供了一些新的元素和属性,例如

自 1999 年 12 月发布的 HTML 4.01 后,后继的 HTML5 和其它标准被束之高阁,为了推动 Web 标准化运动的发展,一些公司联合起来,成立了一个叫做 Web 超文本应用技术工作组 - WHATWG 的组织,该组织对 HTML5 的发展起了至关重要的作用。HTML5 草案的前身名为 Web Applications 1.0,於 2004 年被 WHATWG 提出,於 2007 年被 W3C 接纳,成立了新的 HTML 工作团队。HTML5 的第一份正式草案已于 2008 年 1 月 22 日公布,总的来说有两大特点:首先,强化了 Web 网页的表现性能。其次,追加了本地数据库等 Web 应用的功能。HTML5 即将成为 HTML、XHTML 以及 HTML DOM 的新标准,虽然目前 HTML5 仍处于完善之中,然而,大部分现代浏览器已经具备了某些 HTML5 支持,所以 HTML5 前景一片看好。

回页首
HTML5 新元素

HTML5 的最大的特点之一就是提供了很多新的元素,这些元素相当强大,也非常符合我们日常开发的需要。之前我们花了很大力气写好的一些控件,如:日期控件,进度条控件等等,已经被 HTML5 支持了。在接下来的章节中,我们会介绍一些 Web 开发中比较常用的新元素,并深入介绍他们的各种属性和特性。
新表单元素,属性及事件

HTML5 拥有多个新的表单输入类型。这些新特性提供了更好的输入控制和验证。来看一个简单示例:
清单 1. 简单 email, url 示例

这里是一个简单的 email、url 输入框使用示例,可见,我们只需要设定他的 type 属性即可。如果设定为 email,则浏览器会验证他的输入是否合法(必须为邮件格式),见下图:(支持浏览器 Firefox,Chrome 和 Opera)
图 1. Email 输入框图示
图 1. Email 输入框图示

Email 输入框也支持输入多个,只需要用“,”分隔开来即可,浏览器会对这些分隔开来的字符串分别验证。

让我们在深入一点,以下是浏览器验证所对等的正则表达式:

“/^[a-zA-Z0-9.!# /”

这种验证如果有我们自己来做,会耗费大量时间,而且性能不会太好。值得庆幸的是:随着各大浏览器的不断完善,越来越能更好的支持 HTML5,不久的将来,我们就不用再考虑如何做这些验证了。

同理,“url”类型也是。这样一来,节省了大量的验证代码,使用起来极为方便。

再来看数字输入框的例子:
清单 2. 简单 number、range 示例

这里的 step 表示规定的合法的数字间隔。他们的效果图如下:(支持浏览器 Chrome,Safari 和 Opera)
图 2. Number 和 Range 输入框图示
图 2. Number 和 Range 输入框图示

这些数字输入控件使用方便且非常直观,由于是内置的控件,我们完全不用担心性能的问题,所以,强烈建议大家试用。

接下来我们再来看两个使用比较广泛的控件 - date 和 time。HTML5 拥有多个可供选取日期和时间的新输入类型:

  1. date - 选取日、月、年

  2. month - 选取月、年

  3. week - 选取周和年

  4. time - 选取时间(小时和分钟)

  5. datetime - 选取时间、日、月、年(UTC 时间)

  6. datetime-local - 选取时间、日、月、年(本地时间)

参见如下示例:
清单 3. Date 和 Time 输入框

使用方式依然简单,可以参见如下效果图:(支持浏览器 Chrome,Safari 和 Opera)
图 3. Date 和 Time 输入框图示
图 3. Date 和 Time 输入框图示

如图 3 所示,这里列出了选月(Month)和选时间加日期(DateTime)的效果图。这些都是内置的一些控件,无需我们额外开发了。除此以外,还有“datatime-local”的类型,专门针对不同的国家实现本地化,功能相当完善。

还有“search”控件,专门用来作为搜索框出现在页面上,样式与文本框相同。以上这些简单的新输入控件使用便捷且性能颇高。

再来看看稍微复杂一些的控件:数据列表,在 HTML5 中被称作“datalist”,用来显示列表数据,类似一个简单的 select 控件。这个控件简单清晰,方便选择且支持输入,在如今的 Web 开发中越来越受到青睐,见如下示例:
清单 4. Datalist 控件






可见,datalist 控件的用法类似 select,参见如下效果图:(支持浏览器 Firefox,Chrome 和 Opera)
图 4. Datalist 图示
图 4. Datalist 图示

在我们输入时,他会自动弹出备选项,这种控件非常人性化,用户体验极好。

再来看看 keygen 元素,keygen 元素的作用是提供一种验证用户的可靠方法。keygen 元素是密钥对生成器(key-pair generator)。当提交表单时,会生成两个键,一个是私钥,一个公钥。私钥(private key)存储于客户端,公钥(public key)则被发送到服务器。公钥可用于之后验证用户的客户端证书(client certificate)。
清单 5. Keygen 元素


Username:
Encryption:

这里我们加入了一个“name”为“security”的 Keygen 控件,在该表单提交时,浏览器会提示您输入密码以确保提交安全,如下图所示:(支持浏览器 Firefox,Chrome,Safari 和 Opera)
图 5. Form 包含 Keygen 元素
图 5. Form 包含 Keygen 元素

如图 5 所示,点击“submit”时,会弹出“password”对话框。通过很简单的代码,我们便能实现安全的表单提交。

目前,支持此元素的浏览器不多,不过相信各大浏览器厂商也都想早日完成 HTML5 完全支持的目标。

最后,我们来看看 output 元素,该元素很简单,专门用来输出,见如下示例:
清单 6. Output 元素

function resCalc()
{
numA=document.getElementById(“num_a”).value;
numB=document.getElementById(“num_b”).value;
document.getElementById(“result”).value=Number(numA)+Number(numB);
}


+
=

这里我们通过“onforminput”监听表单输入事件,通过对 Output 元素“value”属性的赋值来显示输出,代码简洁且通俗易懂。(支持浏览器 Firefox,Chrome,Safari 和 Opera)

前面我们介绍了新的表单相关元素,接下来我们来看看新的一些元素属性。HTML5 中提到的新属性非常多,这些属性控制着很多非常实用的功能,如:autocomplete(自动补全)、required(不能为空)、placeholder(提示符)等等,还有 autofocus、list、min、max、pattern、novalidate 等等。下面我们来一一介绍:
清单 7. Autocomplete 属性代码示例


First name:

Last name:

E-mail:


如果我们设置了“autocomplete”属性为“on”,那么当用户在自动完成域中开始输入时,浏览器会在该域中显示填写的选项。参见图 6:(支持浏览器 IE9,Firefox,Chrome,Safari 和 Opera)
图 6. Autocomplete 图示效果
图 6. Autocomplete 图示效果

我们再来看看关于 Form 的几个特殊属性:表单重写属性。表单重写属性(form override attributes)允许您重写 Form 元素的某些属性设定。

表单重写属性如下:

formaction - 重写表单的 action 属性
formenctype - 重写表单的 enctype 属性
formmethod - 重写表单的 method 属性
formnovalidate - 重写表单的 novalidate 属性
formtarget - 重写表单的 target 属性

重写后,Form 会按照您重写的后的方案去执行。参考如下代码:
清单 8. 表单重写属性


E-mail:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值