总结自Jeremy Keith在 Fronteers 2010 上的主题演讲。
这里要讲的只是HTML5,并不包含CSS3,而且讲的不是HTML5包含什么,而是讲为什么会包含它们。即HTML5的设计原理。
设计原理 本质上是一种信念、一种想法、一个概念,是你行动的支柱。不管你是制定规范,还是制造一种有形的物品,或者编写软件,甚至发明编程语言。你都能找到背后的一个或者多个设计原理,多人协作的任何成果都是例证。
伯斯塔尔法则(Postel’s Law):发送时要保守;接收时要开放。什么意思呢?意思就是,作为专业人士,在发送文档的时候,我们会尽量保守一些,尽量采用最佳实践,尽量确保文档格式良好。但从浏览器的角度说,它们必须以开放的姿态去接收任何文档。
好了,下面说一下设计原理吧。
设计原理
1、避免不必要的复杂性
这个很简单,举个例子来说
<!DOCTYPE html >
HTML5只要这样写doctype就可以了,那么之前呢,拿之前的HTML4.01来说,
1 <!DOCTYPE html PUBLIC "-//W3C/DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
这么一长串根本记不住!
那么,doctype是用来干什么的呢,为什么在文档开始就要写doctype呢?
回答一下上面的问题:
它不是写给浏览器看的。Doctype 是写给验证器看的。也就是说,我之所以要在文档一开头写那行 doctype,是为了告诉验证器,让验证器按照该 doctype来验证我的文档。浏览器在接收的时候必须要开放。因此,它不会检查任何格式类型,而验证器会,验证器才关心格式类型。这才是存在 doctype> 的真正原因。
而按照 HTML5 的另一个设计原理, 它必须向前向后兼容, 兼容未来的 HTML 版本——不管是 HTML6、HTML7,还是其他什么——都要与当前的 HTML 版本,HTML5,兼容。因此,把一个版本号放在 doctype 里面没有多大的意义,即使对验器证也一样。
在页面上加入了doctype,就相当于声明了“我想使用标准模式”
2、支持已有内容
我们都会考虑让 Web 的未来发展得更好,但他们则必须考虑过去。别忘了 W3C 这个工作组中有很多人代表的是浏览器厂商, 他们肯定是要考虑支持已有内容的。 只要你想构建一款浏览器,就必须记住这个原则:必须支持已有的内容。
举个例子:
<img src=