HTML5 是基于各种各样的理念(在 WHATWG 规范中有详述)进行设计的,这些设计理念体现了对可能性和可行性的新认识。
- 兼容性
- 实用性
- 互通性
- 通用访问性
1.4.1 兼容性和存在即合理
别担心,HTML5 并不是颠覆性的革新。相反,实际上 HTML5 的一个核心理念就是保持一切新特性平滑过渡。一旦浏览器不支持 HTML5 的某项功能,针对功能的备选行为就会悄悄进行。再说,互联网上有些 HTML 文档已经存在 20 多年了,因此,支持所有现存 HTML 文档是非常重要的。
HTML5 的研究者们还花费了大量的精力来研究通用行为。比如,Google 分析了上百万的页面,从中分析出了 DIV 标签的通用 ID 名称,并且发现其重复量很大。例如,很多开发人员使用DIV id=”header”来标记页眉区域。HTML5 不就是要解决实际问题吗?那何不直接添加一个<header>标签呢?尽管 HTML5 标准的一些特性非常具有革命性,但是 HTML5 旨在进化而非革命。毕竟没有从头再来的必要。(就算有必要的话,也不应该是 HTML5,起码也要发明一个更好的!)
1.4.2效率和用户优先
HTML5 规范是基于用户优先准则编写的,其宗旨是“ 用户即上帝” ,这意味着在遇到无法解决的冲突时,规范会把用户放到第一位,其次是页面作者,再次是实现者(或浏览器),接着是规范制定者(W3C/WHATWG),最后才考虑理论的纯粹性。因此,HTML5 的绝大部分是实用的,只是有些情况下还不够完美。看看这个示例,下面的几种代码写法在 HTML5 中都能被识别。
id=”prohtml5″
id=prohtml5
ID=”prohtml5″
当然,肯定会有人反对这种不严格的语法,我们不去辩论对错,只去关心一个底线,那就是最终用户其实并不在乎代码怎么写。当然,我们并不提倡入门者一开始写代码就这么不严谨,毕竟归根结底,受害者还是最终用户,因为一旦由于开发人员的原因造成页面错误导致不能正常显示,那么被折磨的肯定是最终用户。
HTML5 也衍生出了 XHTML5(可通过 XML 工具生成有效的 HTML5 代码)。HTML 和XHTML 两种版本的代码经过序列化应该可以生成近乎一样的 DOM 树。显然 XHTML 的验证规则严格得多,刚才示例中后两行代码是无法通过验证的。
1. 安全机制的设计
为保证 HTML5 足够安全,HTML5 在设计时就做了大量的工作。规范中的各个部分都有专门针对安全的章节,并且安全是被优先考虑的。HTML5 引入了一种新的基于来源的安全模型,该模型不仅易用,而且对各种不同的 API 都通用。这个安全模型可以让我们做一些以前做不到的事情,不需要借助于任何所谓聪明、有创意却不安全的 hack 就能跨域进行安全对话。在这方面,我们肯定不会怀念过去的“ 好” 时光了。
2. 表现和内容分离
在清晰分离表现和内容方面,HTML5 迈出了巨大的步伐。HTML5 在所有可能的地方都努力进行了分离,也包括 CSS。实际上,HTML5 规范已经不支持老版本 HTML 的大部分表现功能了,但得益于先前提到的 HTML5 在兼容性方面的设计理念,那些功能仍然能用。表现和内容分离的概念也不是全新的,在 HTML 4 Transitional 和 XHTML 1.1 中就已经开始用了。Web 设计者把这个概念当做最佳实践使用了很久,不过现在清晰地分开表现和内容显得更为重要,否则会有如下
弊端:
可访问性差;
不必要的复杂度(所有样式代码都放在页面中,代码可读性很差);
文件变大(样式内容越多,文件越大),带来的后果就是页面载入变慢。
1.4.3 化繁为简
HTML5 要的就是简单、避免不必要的复杂性。HTML5 的口号是“ 简单至上,尽可能简化” 。因此,HTML5 做了以下这些改进:
以浏览器原生能力替代复杂的 JavaScript 代码;
新的简化的 DOCTYPE;
新的简化的字符集声明;
简单而强大的 HTML5 API。
随后我们将详细讲解这些改进。
为了实现所有的这些简化操作,HTML5 规范已经变得非常大,因为它需要精确再精确。实际上要比以往任何版本的 HTML 规范都要精确。为了达到在 2022 年能够真正实现浏览器互通的
目标,HTML5 规范制订了一系列定义明确的行为;任何歧义和含糊都可能延缓这一目标的实现。另外,HTML5 规范比以往的任何版本都要详细,为的是避免造成误解。HTML5 规范的目标是完全、彻底地给出定义,特别是对 Web 应用。所以也难怪,整个规范超过了 900 页!基于多种改进过的、强大的错误处理方案,HTML5 具备了良好的错误处理机制。非常有现实意义的一点是,HTML5 提倡重大错误的平缓恢复,再次把最终用户的利益放在了第一位。比如,如果页面中有错误的话,在以前可能会影响整个页面的显示,而 HTML5 不会出现这种情况,取而代之的是以标准方式显示“ broken” 标记,这要归功于 HTML5 中精确定义的错误恢复机制。
1.4.4 通用访问
这个原则可以分成三个概念。
可访问性:出于对残障用户的考虑,HTML5 与 WAI(Web Accessibility Initiative,Web 可访问性倡议)和 ARIA(Accessible Rich Internet Applicaions,可访问的富 Internet 应用)做到了紧密结合,WAI-ARIA 中以屏幕阅读器为基础的元素已经被添加到 HTML 中。
HTML5 的功能在所有不同的设备和平台上应该都能正常运行。媒体中立:如果可能的话,支持所有语种:例如,新的<ruby>元素支持在东亚页面排版中会用到的 Ruby 注释。