当前位置:  开发笔记 > 前端 > 正文

html中有哪些不同的doctypes,它们是什么意思?

如何解决《html中有哪些不同的doctypes,它们是什么意思?》经验,为你挑选了2个好方法。

正如标题所描述的那样,可用的不同文档类型是什么?它们的含义是什么?我注意到当我切换时,IE7中的布局看起来有点不同



还有其他人,有什么影响或后果?

谢谢!



1> keparo..:

一个文档类型文档类型声明关联与文档的文档类型定义.

文档类型定义是一个XML文档的标准.XML和XHTML文档都有许多DTD.除了要求一切都格式正确之外,XML本身没有太多的模式或非常具体的规则.您可以将DTD视为文档的更具体的架构.

渲染模式

由于标准的运行,大多数现代浏览器实际上都有不同的渲染模式(标准模式,根据更新的Web标准渲染文档和css,以及怪癖模式,其中浏览器从网络的早期带回一些渲染想法).这些模式是为了向后兼容而设立的.在网络的第一个时代创建的网页的广阔景观是根据他们的时间规则呈现的,而较新的文档可以吸引新的标准浪潮.随着时间的推移和想象的新格式,可能会创建相应的DTD.

浏览器差异

在理想的世界中,浏览器加载的页面将读取顶部的Doctype并使用它来查找文档类型定义.然后,它将使用该DTD的模式作为读取文档其余部分的基础.因此,Doctypes对于验证标记文档至关重要.DTD将提供验证文档的标准.

不幸的是,这不是一个理想的世界.浏览器在这里并不一定表现一致,如果它们一致,那么一致的行为与Doctypes的原始愿景并不完全一致.虽然解析是独立于Doctype完成的,但主要浏览器至少会检查Doctype以确定渲染模式.如果您的Doctype不存在或不完整,浏览器可能会以怪异模式呈现.要使编写良好的现代文档正确显示,浏览器应以标准模式呈现.Mozilla,Safari和一些最新版本的Opera实际上实现了Almost Standards模式,该模式完全专用于过渡页面.

当您更改Doctype并注意页面显示方式的变化时,这是因为浏览器在尝试解析文档时可能会应用稍微不同的规则集.因此,结果页面可能会略有不同,具体取决于其所有部分是否符合DTD,或者至少(取决于浏览器),您的数据在doctype建议的呈现模式中验证.

选择Doctype

为了遵守标准,应尽可能使用严​​格的Doctypes.

XHTML中编写时,此Doctype很常见:


HTML 4.1中编写时,这个是常见的:


此处列出了XHTML和HTML 4的一些其他常见文档类型,以确保完整性:








关于严格与过渡性Doctypes的争论

标准传播者呼吁Web开发人员停止在新页面上使用Transitional Doctype,而是使用Strict.同样,这是理论和实践在协调方面存在一些困难的情况.过渡性Doctype的最初希望是为将旧网站转换为符合标准提供一个中途之家.对于过渡性文档类型,对元素和属性的限制实际上"不那么严格",因此开发人员能够更快地在标准模式下运行,并逐步消除突出的差异.

存在争议是因为开发人员在企业环境中更改Doctype并不总是那么简单.自由开发者和中小型网站的制作者通常可以更容易地确定他们的Doctype并进行这种转换.在针对高要求的基于Web的服务的企业生产环境中,遗留系统和第三方代码产品本身就存在更复杂的依赖关系,这些产品本身可能在路线图上进行删除或重新设计,但此类更改的执行必须是有条不紊地和渐进地完成.

有用的工具

W3C(万维网联盟)是一个在定义这些标准方面发挥积极作用的团体.他们在http://validator.w3.org/上维护了一个有用的在线工具,用于根据标准验证和验证文档.还有许多其他第三方工具和具有类似功能的浏览器扩展.



2> cic..:

浏览器不关心你使用什么doctype(好吧,几乎是真的),他们只用一件事,一件事:决定使用哪种渲染模式.请参阅例如Fx或Opera文档中的实际示例,了解使用哪种算法来决定使用哪种模式(我想有一些文档也可以在MSDN中隐藏某些文件...... [这可能是正确的页面](http ://msdn.microsoft.com/en-us/library/ms535242(VS.85).aspx),我不知道,对不起).

然而,在大多数浏览器中有两种主要模式(某些浏览器也具有几乎标准模式):

怪癖模式(当没有找到"正确"的doctype时使用,从浏览器的角度来看是"正确"):尝试将文档呈现为IE的某些旧版本(最重要的差异之一,即影响渲染最多) ,有些浏览器在这种模式下利用IE盒模型bug,

标准模式(当浏览器找到它认为正确的doctype时使用):尝试按标准说明.

您可以document.compatMode在前面提到的浏览器中使用(非标准)属性来检查用于呈现当前文档的模式.

(关于XHTML的注意事项:我假设您将文档作为HTML(text/html)提供,如果您将文档作为XHTML提供(可能application/xhtml+xml),大多数浏览器直接跳转到标准模式并且不关心所有AFAIK上的doctype.)

顺便说一句:其他答案中的推荐(或看起来像推荐)被打破了,过渡性 DTD不应该用在新文件上.总是使用严格(术语"严格"是一种误导,应该是"默认"或其他非恐怖的),期间:

作者应尽可能使用Strict DTD,但在需要支持表示属性和元素时可以使用Transitional DTD.- HTML 4.01:22过渡文档类型定义.

我们建议作者编写符合严格DTD的文档,而不是本规范定义的其他DTD.- HTML 4.01:4一致性:要求和建议

并且有很多关于此的博客文章,例如,不再有过渡性DOCTYPE,请(从2006年开始,但有些人显然仍有问题:).

这篇文章首先指出浏览器不关心你选择什么,然后发展成为一个关于如何选择正确的DTD的咆哮,有趣......但是如果你要花费(/浪费?)时间和精力选择一个DTD你也可以选择正确的DTD(从HTML 4.01标准的角度来看).

或者,你可以忽略这一切,改用以下,很快 反正:


(这个回答 "任何不开始使用HTML 5 doctype的原因?"与最后一部分有关.)

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有