重新认识HTML

和HTML打交道好几年了,以前一直以为自己会用就行了,结果,受打击了!!
所以我要重新认识HTML!

在你每一个页面的顶端,你需要文档声明。是的,必须。
如果不指定文档类型,你的HTML不是合法的HTML,并且大部分浏览器会用“怪癖模式(quirks mode)”来处理页面,这意味着浏览器认为你自己也不知道究竟做什么,并且按浏览器自己的方式来处理你的代码。你可以是一个HTML大师,在地球上打遍天下无敌手,或者你的HTML可以无瑕疵,CSS可以很完美,但如果没有文档声明,或者错误的文档声明,你的网页与一个短视的,独眼的长臂猿婴儿十分艰难地堆砌起来的没两样。

定义及用法
文档类型声明(doctype声明)应被置于HTML文档的开头,<html>标签之前。
doctype并不是一个HTML标签;它只是一个指令,告知浏览器当前页面是遵循哪种标记语言编写的。
每个文档类型声明都要引用一个DTD(Document Type Definition,文档类型定义)。DTD规定了标记语言的书写规则,正因如此浏览器才能正确呈现内容。
HTML/XHTML元素和有效的DTDs

下面是代码的分解:
开始部分:< ! DOCTYPE HTML PUBLIC
公共标识符:"-//W3C//DTD HTML 4.01//EN"
系统标识符:"http://www.w3.org/TR/html4/strict.dtd">
注意:上面列表中的公共标识符是大小写敏感的,因此,它必须根据下一部分描述的定义出现。

请参阅HTML/XHTML标签参考手册,其中说明了各个标签为哪种DTD所支持。


标签 HTML 4.01/XHTML 1.0 XHTML 1.1
过渡版(Transitional) 严格版(Strict) 框架集(Frameset)
<a>
<abbr>
<acronym>
<address>
<applet>
<area />
<b>
<base />
<basefont />
<bdo>
<big>
<blockquote>
<body>
<br />
<button>
<caption>
<center>
<cite>
<code>
<col />
<colgroup>
<dd>
<del>
<dfn>
<dir>
<div>
<dl>
<dt>
<em>
<fieldset>
<font>
<form>
<frame />
<frameset>
<h1>至<h6>
<head>
<hr />
<html>
<i>
<iframe>
<img />
<input />
<ins>
<isindex>
<kbd>
<label>
<legend>
<li>
<link />
<map>
<menu>
<meta />
<noframes>
<noscript>
<object>
<ol>
<optgroup>
<option>
<p>
<param />
<pre>
<q>
<s>
<samp>
<script>
<select>
<small>
<span>
<strike>
<strong>
<style>
<sub>
<sup>
<table>
<tbody>
<td>
<textarea>
<tfoot>
<th>
<thead>
<title>
<tr>
<tt>
<u>
<ul>
<var>

W3C标准定义的文档类型

HTML 4.01严格版(Strict)
本DTD包含所有HTML元素及属性,但不包括那些用于表现用途的和被弃用的(例如font)。它不支持框架集。

HTML 4.01过渡版(Transitional)
本DTD包含所有HTML元素及属性,包括那些用于表现用途的和被弃用的(例如font)。它不支持框架集。

HTML 4.01框架集(Frameset)
本DTD在HTML 4.01过渡版基础之上,增加了对框架集的支持。

XHTML 1.0严格版(Strict)
本DTD包含所有HTML元素及属性,但不包括那些用于表现用途的和被弃用的(例如font)。它不支持框架集。文档必须是良构的(well-formed)XML文档。

XHTML 1.0过渡版(Transitional)
本DTD包含所有HTML元素及属性,包括那些用于表现用途的和被弃用的(例如font)。它不支持框架集。文档必须是良构的(well-formed)XML文档。

XHTML 1.0框架集(Frameset)
本DTD在XHTML 1.0过渡版基础之上,增加了对框架集的支持。

你使用这的唯一理由是你还要兼容老版本的,少用的浏览器。过渡型XHTML 1.0允许HTML 4的表现元素,其也可能在如Netscape 4的浏览器中表现更好。但使用这些元素将对你网页的效率和可用性有害。

XHTML 1.1
本DTD与XHTML 1.0严格版等价,不过它允许你添加模块(比如为东亚语言提供ruby注音标记支持)。

语言声明
即使HTTP头或者在html起始标签内设置了xml:lang属性,你也必须为文档指定一个主要语言。尽管处理一个合法的XHTML文档这不是必须的,但也是一个易用性的考虑。值是缩写的,比如en(English,英语),fr(French,法语),de(German,德语)或者mg(Malagasy,这是什么语?译者也不知道,呵呵。——译者注)。

声明一个主要用英语内容的文档,例子是这样的:

在声明主要语言之后,假如还需要使用其他语言,你还可以在内联中使用xml:lang属性(比如HTML Hund)。

内容类型
HTML文档的媒体类型和字体集也许要指定,可以使用HTTP头来完成,比如:

HTTP头部的第一部分(如text/html)是文件MIME类型,让浏览器知道文件的媒体类型因此可以知道怎么处理。所有的文件都有MIME类型。JPEG图像是image/jpeg,CSS文件是text/csss和HTML一般使用text/html。

HTTP头部的第二部分(如UTF-8部分)是字符集。
也许设置HTTP头的最简易方法是在HTML中使用“HTTP同义(HTTP-equivalent)”的头标签,像这样:

字符集包括大部分西方基于拉丁文语言的“ISO-8859-1”,日语的“SHIFT_JIS”,中文的“GB18030”和UTF-8,一个 Unicode Transformation Format版本,提供大范围的多种语言的单个字符。基本上,你应该使用一个你知道的,能为你用户清楚认知的字符集。除非你使用基于拉丁语的语言(包括英语)(ISO-8859-1被普遍接受的),你应该使用UTF-8因为它可以显示大多数语言的大多数字符,使用它也是安全的,因为它可以在大部的计算机上使用。

回应 (4)
  1. 我把现在用的主题进行了w3c标准测试,惨不忍睹啊。。。这就是和技术大神们的差距啊,唉,菜鸟终究是菜鸟啊。

    1. jun jun

      @丁臣
      总有一天,你也会是大神的~

  2. 沙发。。。。。