<html>如果我们已经用<!DOCTYPE html>标签定义了这个文档是html,为什么还要加标签呢?
是否可以添加任何其他标签来代替?
如果没有,我们为什么需要它?
<!DOCTYPE html>和<html>,尽管都包含< angle brackets >,但本质上是不同的:
<!DOCTYPE html>声明文档类型并且不会被解析为任何 DOM 元素。引用MDN 的 Doctype 文章,“它的唯一目的是防止浏览器在呈现文档时切换到所谓的“怪癖模式” ”。<html>但是,确实解析为 DOM 元素。您可以为其附加属性或使用 JavaScript 对其进行操作。例如,尝试在您的浏览器控制台粘贴此:document.querySelector('html').style.opacity = '0.5'。您可以使用<html>,但不能使用DOCTYPE.为什么要有任何标准?标准是必要的,以便实施者(例如浏览器供应商)知道他们需要构建什么,而开发者知道他们正在开发什么。如果没有通用标准,就不可能构建可互操作的软件。
你当然可以质疑为什么制定标准的逻辑,答案几乎是“因为历史”(有时是“因为政治”)。如果现在改变这些历史决定,它会破坏网络。
lang出于可访问性和 SEO 的原因,最好始终在 HTML 元素上设置属性,并且您需要包含它才能做到这一点:
始终在 html 标签上使用语言属性来声明页面中文本的默认语言。
在编写代码或标记以明确表达您的意图以帮助其他人阅读您的作品时,这也是一般的最佳实践。仅出于这个原因,添加周围的 HTML 标记会更清晰。
如果您没有在 HTML 元素上包含任何属性,那么就解析方式而言,您编写的内容实际上并不重要,因为HTML 非常宽容)(链接@Run_Script)。无论如何,它都会被解析到相关的 DOM 节点,所以document.body.parentElement instanceof HTMLHtmlElement总是true.
尽管如此,由于上述原因,我建议始终包括它。