您需要关闭 HTML 中的元标签和链接标签吗?

Do you need to close meta and link tags in HTML?

提问人:bcollins 提问时间:10/22/2013 最后编辑:TylerHbcollins 更新时间:11/5/2023 访问量:86011

问:

我只是在阅读某人的 HTML,他从未在 HTML head 部分关闭 meta 和 link 标签。代码工作正常;关闭这些标签是可选的吗?

我认为如果不关闭标签,它会格式不正确。

HTML xhtml

评论

0赞 TylerH 12/1/2021
@Inigo请不要创建不必要的标签。HTML 已经包含了对语法的担忧。
0赞 TylerH 12/1/2021
让我们在聊天中继续讨论

答:

42赞 Sebsemillia 10/22/2013 #1

这取决于文档类型。HTML5 不需要关闭。XHTML 确实如此。

在 HTML5 中,所谓的 void 元素(不能包含内容的元素)不需要关闭,因为它们是自关闭的。但是,如果您关闭它们,它仍然有效。

在这里阅读更多关于它的信息: void-elements

评论

9赞 Jukka K. Korpela 10/22/2013
HTML5 有两个序列化,其中一个(XHTML 序列化)使结束标记成为强制性的。
216赞 Jukka K. Korpela 10/22/2013 #2

标签必须始终由标签关闭符号封闭(如果我们忽略某些 SGML 规则,这些规则名义上适用于非 XHTML HTML 中,但从未在浏览器中实现)。>

你要问的是元素是否需要用结束标记来关闭。答案是非 XHTML HTML(包括 HTML 序列化中的 HTML5),不需要或允许 和元素的结束标记。然而,在实践中,浏览器只是忽略了它们的显式结束标签,以及 之前的 cargo-cult ,如果你使用它们。HTML5 甚至正式允许 HTML 序列化,从而使这种宽容成为一种规则。metalink/>/

在XHTML中,XML规则适用,因此每个元素都必须具有开始标记和结束标记,但是如果元素内容为空,则可以对这两个角色使用相同的标记,例如 作为 的缩写。如果在向符合要求的浏览器提供具有 XML (XHTML) 内容类型的文档时违反此规定,则根本不会显示您的文档;而是显示一条错误消息。<meta name="foo" content="bar"/><meta name="foo" content="bar"></meta>

当使用具有 HTML 内容类型 () 的 XHTML 服务器时,由于 XHTML 文档几乎总是在 Web 上,因此浏览器实际上将应用非 XHTML HTML 规则。Content-Type: text/html

总结一下:

  • 通常,只使用没有<meta ...>/
  • 如果您确实在实际应用 XHTML 解析的上下文中使用 XHTML,请遵循 XML 规则(并确保您了解它们)
  • 如果你的老板让你写,就去做;它没有用,但它不会造成任何伤害(除非您尝试验证例如针对 HTML 4.01 文档类型)。<meta ... />

评论

5赞 DevZer0 5/11/2015
使用 /> 会导致 Google 机器人无法识别元漫游器标记的问题。奇怪!!!
25赞 Marcus 1/17/2016
在这种情况下,我认为“货物崇拜”一词不合适。有些人关闭了这些元素,仅仅是因为他们压制了XHTML没有占上风。
12赞 Aaron Wallentine 6/25/2016
迂腐警报!在正常实践中,“货物崇拜”不会连字符,而只有在将整个短语用作其他事物的形容词时才会使用连字符(即“cargo-cult programming”、“cargo-cult before”)。我只是想澄清一下,以避免让互联网陷入更多混乱。 : )/></pedant_alert>
2赞 Simon East 11/17/2016
@DevZer0 - 你确定斜线是原因吗?我希望谷歌在这样的事情上保持灵活。
4赞 Kyle Delaney 3/19/2018
使 HTML 与 XHTML 规则一致难道不是在>之前包含 / 的理由吗?
-2赞 Ashish 10/31/2022 #3

元标记通常关闭,此结束标记>代替 /> 如

评论

0赞 Community 11/3/2022
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。
-1赞 Mansi Sharma 11/5/2023 #4

在 HTML 中,通常需要关闭元标记,但不需要关闭链接标记。

元标记通常提供有关 HTML 文档的元数据,它们是自闭合标记,这意味着它们没有结束标记。例如:

<meta charset="UTF-8">
<meta name="description" content="This is a description">

至于链接标签,这些标签用于链接外部资源,如样式表,并且也是自闭合的。例如:

<link rel="stylesheet" type="text/css" href="styles.css"/>

在这两种情况下,结束标记都不是必需的,因为这些标记是独立的,不包含任何内容。它们旨在提供信息或引用外部资源,因此它们没有相应的结束标记。

评论

0赞 starball 11/5/2023
为什么你说的与自身不一致?