实际上,html5并不是由w3c直接制定的,w3c的方向是xhtml2,而不是html5。当xhtml2脱离现实,无法付诸实践时,w3c工作组才将研究方向转向html5。为什么xhtml2从未落到实处?因为它违反了一条设计原理,这条设计原理就是著名的伯斯塔尔法则——发送时要保守;接收时要开放。而在html5设计过程中遵循了一系列原则,才使得html5得以快速推广。本文将介绍html5遵循的6个设计原则
html4
span style="color: #800000;">"<span style="color: #800000;">-//W3C/DTD HTML 4.01//EN</span><span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800000;">http://www.w3.org/TR/html4/strict.dtd</span><span style="color: #800000;">"</span>>
html5
html4
<meta http-equiv="<span" style="color: #800000;">"<span style="color: #800000;">Content-Type</span><span style="color: #800000;">"</span> content=<span style="color: #800000;">"</span><span style="color: #800000;">text/html; charset=utf-8</span><span style="color: #800000;">"</span>>
html5
<meta charset="<span" style="color: #800000;">"<span style="color: #800000;">utf-8</span><span style="color: #800000;">"</span>>
以下四段代码,在xhtml中只有第一段是正确的;而在html5中,所有的都是正确的
<img src="<span" style="max-width:90%" alt="html5遵循的6个设计原则 - 小火柴的蓝色理想" >"<span style="color: #800000;">foo</span><span style="color: #800000;">"</span> alt=<span style="color: #800000;">"</span><span style="color: #800000;">bar</span><span style="color: #800000;">"</span> /> <p style="color: #0000ff;">class=<span style="color: #800000;">"</span><span style="color: #800000;">foo</span><span style="color: #800000;">"</span>>Hello world</p> <img src="<span" style="max-width:90%" alt="html5遵循的6个设计原则 - 小火柴的蓝色理想" >"<span style="color: #800000;">foo</span><span style="color: #800000;">"</span> alt=<span style="color: #800000;">"</span><span style="color: #800000;">bar</span><span style="color: #800000;">"</span>> <p style="color: #0000ff;">class=<span style="color: #800000;">"</span><span style="color: #800000;">foo</span><span style="color: #800000;">"</span>><span style="color: #000000;">Hello world </span><img src="<span" style="max-width:90%" alt="html5遵循的6个设计原则 - 小火柴的蓝色理想" >"<span style="color: #800000;">foo</span><span style="color: #800000;">"</span> ALT=<span style="color: #800000;">"</span><span style="color: #800000;">bar</span><span style="color: #800000;">"</span>> </p><p class="<span" style="color: #800000;">"<span style="color: #800000;">foo</span><span style="color: #800000;">"</span>>Hello world</p> <img src="foo" alt="bar"> <p style="color: #0000ff;">class=foo>Hello world</p>
在html4中,即使两个块级元素元素有相同的链接地址,也必须分开写,因为内联元素不能包含块级元素
<h2><a href="<span" style="color: #800000;">"<span style="color: #800000;">/path/to/resource</span><span style="color: #800000;">"</span>>Headline text</a></h2> <p><a href="<span" style="color: #800000;">"<span style="color: #800000;">/path/to/resource</span><span style="color: #800000;">"</span>>Paragraph text.</a></p>
而在html5中,由于使用了内容模型,元素也可以包含块级元素
<a href="<span" style="color: #800000;">"<span style="color: #800000;">/path/to/resource</span><span style="color: #800000;">"</span>> <h2>Headline text</h2> <p>Paragraph text.</p> </a>
html5新增了多个元素,其中包括:section、article、aside和nav,它们代表了一种新的内容模型——给内容分区。以前人们一直都在用div来组织页面中的内容,但与其他类似的元素一样,div本身并没有语义。但section、article、aside和nav实际上是在明确地告诉你——这一块就像文档中的另一个文档一样。位于这些元素中的任何内容,都可以拥有自己的概要、标题,自己的脚部。
浏览器在遇到不识别的type值时,会将type的值解释为text
input type=<span style="color: #800000;">"</span><span style="color: #800000;">number</span><span style="color: #800000;">"</span><span style="color: #000000;"> input type</span>=<span style="color: #800000;">"</span><span style="color: #800000;">search</span><span style="color: #800000;">"</span><span style="color: #000000;"> input type</span>=<span style="color: #800000;">"</span><span style="color: #800000;">range</span><span style="color: #800000;">"</span><span style="color: #000000;"> input type</span>=<span style="color: #800000;">"</span><span style="color: #800000;">email</span><span style="color: #800000;">"</span><span style="color: #000000;"> input type</span>=<span style="color: #800000;">"</span><span style="color: #800000;">date</span><span style="color: #800000;">"</span><span style="color: #000000;"> input type</span>=<span style="color: #800000;">"</span><span style="color: #800000;">url</span><span style="color: #800000;">"</span>
一旦遇到冲突,最终用户优先,其次是作者,其次是实现者,其次标准制定者,最后才是理论上的完满。