html页面头部声明的含义
常用的DOCTYPE声明
HTML5
<!DOCTYPEhtml>
HTML4.01Strict
该DTD包含所有HTML元素和属性,但不包括展示性的和弃用的元素(比如font)。不允许框架集(Framesets)。
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
HTML4.01Transitional
该DTD包含所有HTML元素和属性,包括展示性的和弃用的元素(比如font)。不允许框架集(Framesets)。
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
HTML4.01Frameset
该DTD等同于HTML4.01Transitional,但允许框架集内容。
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
XHTML1.0Strict
该DTD包含所有HTML元素和属性,但不包括展示性的和弃用的元素(比如font)。不允许框架集(Framesets)。必须以格式正确的XML来编写标记。
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML1.0Transitional
该DTD包含所有HTML元素和属性,包括展示性的和弃用的元素(比如font)。不允许框架集(Framesets)。必须以格式正确的XML来编写标记。
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML1.0Frameset
该DTD等同于XHTML1.0Transitional,但允许框架集内容。
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
那么在网页中,这些声明有什么作用呢?下面详细来解释下具体什么意思。
上面介绍的这些放在html头部的代码我们称做DOCTYPE声明。DOCTYPE是documenttype(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本。
其中的DTD(例如代码中的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。
要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。
<htmlxmlns="http://www.w3.org/1999/xhtml">
这个"xmlns"是XHTMLnamespace的缩写,叫做"名字空间"声明。名字空间是什么作用呢?
答:由于xml允许你自己自定义标识,你定义的标识和其他人定义的标识有可能相同,但表示不同的意义。当文件交换或者共享的时候就容易产生错误。为了避免这种错误发生,XML采用名字空间声明,允许你通过一个网址指向来识别你的标识。
xmlns属性在XHTML中是必需的。不过即使你的XHTML文档没有使用此属性,W3C的验证器也不会报错。因为"xmlns=http://www.w3.org/1999/xhtml"是一个固定值,所以,即使你没有包含它,此值也会被添加到<html>标签中。
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
声明内容编码类型:为了被浏览器正确解释和通过W3C代码校验,所有的XHTML文档都必须声明它们所使用的编码语言,我们一般使用gb2312(简体中文)或utf-8(国际编码),制作多国语言页面也有可能用Unicode、ISO-8859-1等,根据你的需要定义。
<metahttp-equiv="Content-Language"content="zh-CN"/>
//声明网页采用的语言
<metaname="author"content="Hello"/>
//声明作者名字
<metaname="copyright"content=""/>
//声明版权信息
<metaname="keywords"content=""/>
//声明网页关键字:关键字中间用英文逗号隔开
<metaname="description"content="meta是html语言head区的一个辅助性标签。"/>
//声明对网站的简单描述信息
后面两行主要是被百度这些搜索网站检索的时候用的,对SEO非常重要!
前端开发的时候,如果不指定文件类型,你的HTML不是合法的HTML,并且大部分浏览器会用“怪癖模式(quirksmode)”来处理页面,这意味着浏览器认为你自己也不知道究竟做什么,并且按浏览器自己的方式来处理你的代码。你能是个HTML大师,在地球上打遍天下无敌手,或你的HTML能无瑕疵,CSS能非常完美,但如果没有文件声明,或错误的文件声明,你的网页和一个短视的,独眼的长臂猿婴儿十分艰难地堆砌起来的没两样。
要想写出跨浏览器的CSS,必须知道浏览器解析CSS的两种模式:标准模式(strictmode)和怪异模式(quirksmode)。
所谓的标准模式是指,浏览器按W3C标准解析执行代码;怪异模式则是使用浏览器自己的方式解析执行代码,因为不同浏览器解析执行的方式不一样,所以我们称之为怪异模式。浏览器解析时到底使用标准模式还是怪异模式,与你网页中的DTD声明直接相关,DTD声明定义了标准文档的类型(标准模式解析)文档类型,会使浏览器使用相应的方式加载网页并显示,忽略DTD声明,将使网页进入怪异模式(quirksmode)。
标准模式中IE6不认识!important声明,IE7、IE8、Firefox、Chrome等浏览器认识;而在怪异模式中,IE6/7/8都不认识!important声明,这只是区别的一种,还有很多其它区别。
头部声明是HTML页面非常重要的一部分,有些标签在4.0的声明不起作用,在html5可以,所以,在前端编写代码的时候,注意头部声明的选择和兼容性控制。