如果我使用HTML 5的文档类型声明,会发生什么?

17

我最近在学习文档类型(doctypes),想知道 <!DOCTYPE html> 和其他一些 doctype 之间的区别。

我知道 <!DOCTYPE html> 是 HTML5 的 doctype,而且它是实验性的,但是如果我使用它而不是其他的 doctype,会发生什么呢?

提前感谢!!!


6
这可能包含你的答案:https://dev59.com/C3VD5IYBdhLWcg3wWaVh - Greg
4个回答

12
基本上,您将获得在“标准模式”下呈现页面的效果。
唯一不使用新DOCTYPE的原因是如果您想使用XHTML 1.0标记并符合XHTML 1.0。
使用HTML5的缺点是规范可能会发生变化。这使得您重视规范的积极变化非常重要。
话虽如此,我已经开始在我的页面中使用新语法。它还保证了您的页面非常长久
所以,请放心使用它(并学会喜欢它的简单性)。

4
HTML5文档类型并非实验性质。Ian Hickson测试了许多浏览器,发现<!DOCTYPE html>在它们中的表现与HTML 4和XHTML 1文档类型相同(即触发标准模式)。然而,如果您使用它,则验证器将默认将您的页面验证为HTML5,如果您实际上正在编写HTML 4,则可能不是您想要的。(例如,一些元素在HTML5中被删除。如果您将页面验证为HTML5,使用这些元素会显示为错误。

3

Lucas nailed the most important aspect. Let me explain this in a slightly different way:

在浏览器中,doctype 的作用只有一个,即设置渲染模式:Quirks、almost standards 和 full standards 模式。这在 MSIE 8 之前是很简单的,但 MSIE 8 引入了第二个开关,“compatibility mode” = 故意保留 MSIE7 的漏洞和限制。

HTML5 doctype 将(通常)覆盖该设置,因此比 XHTML 1.x 或 HTML 4.01 doctype 更强大。(不过,MSIE 有时可能会覆盖它。)

doctype 切换和布局模式的权威指南在:http://hsivonen.iki.fi/doctype/

其次,您将根据 HTML5 规则验证页面。一些在 HTML 4 中允许的元素和属性已经被删除,一些新的元素和属性已经出现。

编辑:删除示例。现在可以混合以前称为行内和块级元素的东西。(在最初的提案中不行。)

HTML5 的语义和语法大多类似于 HTML 4,因此大多数精心编写的 HTML 4 网站仍将继续验证。主要的区别是,您可以开始使用新东西而仍然有效。


@Lars - 欢迎。不需要以那种方式编码您的代码 - 从4个空格开始,或单击Code按钮(1010101)即可。 - Kobi
在HTML5中,将块级元素和内联元素混合作为兄弟元素没有问题。请参考Bruce的回答。 - Anish

0

这并不违法

<div>
    <p>foo</p>
    <span>bar</span>
</div>

在HTML5中,“块级元素”和“内联元素”的术语已经过时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接