和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因为它可以显示大多数语言的大多数字符,使用它也是安全的,因为它可以在大部的计算机上使用。
我把现在用的主题进行了w3c标准测试,惨不忍睹啊。。。这就是和技术大神们的差距啊,唉,菜鸟终究是菜鸟啊。
@丁臣
总有一天,你也会是大神的~
沙发。。。。。
@暮春
谢谢 :)