我们经常看到<!DOCTYPE ...>
如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
!DOCTYPE
的功能是什么?
答案 0 :(得分:25)
DOCTYPE最重要的用途是switch a browser between Quirks Mode and Standards Mode rendering。
此功能的出现是因为旧版IE中的“破损”渲染。人们意识到,如果微软只是“修复”IE渲染引擎,许多现有网站将无法正常呈现。所以它的工作方式是你在你的页面中放置任何有效的DOCTYPE声明,假设你知道你正在做什么,你的浏览器将以符合标准的方式呈现,如果你不要把一个放在其中将以旧的“错误”方式呈现。
这最初是在IE中为Mac完成的,但是从IE5,Firefox,Chrome,Safari和Opera开始,IE的所有版本的行为都是一样的。
假设的 是Document Type Definition。 HTML是SGML的子集(与XML一样)。 DTD告诉解析器您正在使用哪种语法。因此,在网页中,您的DOCTYPE应与您正在使用的HTML版本相匹配。
答案 1 :(得分:8)
它告诉验证者你正在使用哪个版本的HTML。浏览器使用此信息正确呈现页面。
以下是DOCTYPE的正确版本:
HTML 4.01严格,过渡,框架集
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0 Strict,Transitional,Frameset
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
HTML5
<!DOCTYPE html>
答案 2 :(得分:1)
主要是为了兼容性。
现代浏览器不再需要它。查看这个没有 !DOCTYPE 的 HTML 文件:
你好
浏览器会自动插入 !DOCTYPE。
但这仅适用于现代浏览器。
在 IE8 中,某些 css 属性只有在声明 doctype 时才具有功能。
因此,如果您不需要支持古代遗物浏览器,则不需要。但它已经成为程序员的习惯!
——
更新:
过去需要 DTD URL 的文档类型。 DTD 定义了文档中的所有元素。如果您使用的是 HTML 4.01 DTD,则 HTML 5 元素将不起作用。
某些功能会中断。如果没有 DOCTYPE,绿色方块会填满宽度的 50%:
div {
width:50%;
background-color:#00ff00;
}
<div>div</div>
但有一个:
div {
width:50%;
background-color:#00ff00;
}
<!DOCTYPE html>
<div></div>
但是,堆栈片段会自动添加一个 !DOCTYPE,因此您无法在此处看到它。
答案 3 :(得分:-1)
它会告诉您的浏览器它正在加载哪个版本的HTML,这使得加载时间更快,因为浏览器知道会发生什么。
doctype是由w3c定义的标准 - 当您听说基于标准的Web开发时,这就是他们所谈论的内容。使用doctype的想法是创建遵循doctype的有效HTML。
如果你聪明,你实际上可以编写自己的doctype。
答案 4 :(得分:-1)
DOCTYPE的主要(实际)目的是迫使IE从“怪癖模式”转变为“符合标准的模式”,这两种委婉语都分别是“可怕的破坏模式”和“略微破碎的模式”。