如果我们不包含doctype并且澄清<!DOCTYPE html>对所有新旧浏览器都没问题,我们将面临哪些问题?
有哪些问题不包括在内<!DOCTYPE html>?
我已经读过Stack Overflow问题什么了,DOCTYPE?,但它没有发现问题.我想知道一些问题,有时答案提供者说你应该定义<!DOCTYPE html>另一类问题,然后解决问题,就像我想知道各种问题一样.
最好的答案来自MDN:
在Web的旧时代,页面通常用两个版本编写:一个用于Netscape Navigator,一个用于Microsoft Internet Explorer.当Web标准在W3C制作时,浏览器不能只是开始使用它们,因为这样做会破坏网络上的大多数现有网站.因此,浏览器引入了两种模式来处理符合新标准的站点,这与旧的旧站点不同.
Web浏览器中的布局引擎现在使用三种模式: 怪癖模式,几乎标准模式和完全标准模式.在怪癖模式下,布局模拟导航器4和Internet Explorer 5 for Windows中的非标准行为,这些行为不会破坏Web上的现有内容.在完全标准模式下,行为(希望)是HTML和CSS规范描述的行为.在几乎标准模式下,只实现了极少数的怪癖.
浏览器如何确定使用哪种模式?
对于HTML文档,浏览器在文档开头使用DOCTYPE来决定是以怪异模式还是标准模式处理它.要确保您的网页使用完整标准模式,请确保您的网页在此示例中具有DOCTYPE:
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8>
<title>Hello World!</title>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
示例中显示的DOCTYPE是最简单的,也是HTML5推荐的DOCTYPE.早期版本的HTML标准推荐了其他版本,但今天所有现有浏览器都将使用此DOCTYPE的完整标准模式,即使是过时的Internet Explorer 6.没有合理的理由使用更复杂的DOCTYPE.如果你使用另一个DOCTYPE,你可能会冒险选择一个,这会触发几乎标准模式或怪癖模式.
确保将DOCTYPE放在HTML文档的开头.DOCTYPE之前的任何内容,如注释或XML声明都将触发Internet Explorer 9及更早版本中的怪癖模式.
在HTML5中,DOCTYPE的唯一目的是激活完整标准模式.较早版本的HTML标准为DOCTYPE提供了额外的含义,但是除了在怪异模式和标准模式之间切换之外,没有任何浏览器曾使用过DOCTYPE.
要回答第二个问题,建议您使用HTML5 doctype:
<!DOCTYPE html>在每个浏览器(包括IE6)中触发标准模式.