HTML 中不需要 P-end-tag (</p>) [已关闭]

问题描述 投票:0回答:4

</p>
仅在 XHTML 中需要,但在 HTML 中不需要。有时你无论如何都必须关闭它,例如当您将段落左/右/中心对齐时。

像下面这样混合使用

</p>
是一个坏主意吗?请注意,第 1 段和第 3 段中没有结尾
</p>
标签。

<h1>My article</h1>
<p>This is my 1st paragraph.
<p class="align=right">This is my 2nd paragraph</p>
<p>This is my 3rd paragraph.

我不想关闭P标签的原因:

  • 易于在我的 CMS 中使用(需要更严格的代码才能使其成为 XHTML)
  • 1kb 较轻的文件
html paragraph
4个回答
49
投票

P-end-tag 仅在 XHTML 中需要,在 HTML 中不需要。

正确

但有时你必须以任何方式关闭它,例如。当您将段落左/右/中心对齐时。

不正确。唯一需要显式结束标记的情况是当您想要结束段落并紧随其后添加段落内允许的内容(例如文本或内联元素)时。这通常是一个坏主意。

出于某种原因混合使用 P-end-tag 会是一个坏主意吗

只有一致性才是有助于代码维护的美德。


19
投票

HTML5 引用清楚地表明何时可以省略

p

因为这就是大多数 Google 员工必须来这里的原因:4.4.1“p 元素”https://html.spec.whatwg.org/multipage/grouping-content.html#the-p-element

text/html 中的标签遗漏:

如果 p 元素后面紧跟着地址、文章、aside、blockquote、details、div、dl、fieldset、figcaption、figure、footer、form、h1、h2、h3、h4,则可以省略 p 元素的结束标记。 h5、h6、header、hgroup、hr、main、menu、nav、ol、p、pre、section、table 或 ul 元素,或者如果父元素中没有更多内容且父元素是 HTML 元素不是 a、audio、del、ins、map、noscript 或 video 元素,也不是自主自定义元素。

值得注意的是,其他一些结束标签也可以省略,例如

li
https://html.spec.whatwg.org/multipage/grouping-content.html#the-li-element

完整列表可在 12.1.2.4“可选标签”中找到 https://html.spec.whatwg.org/multipage/syntax.html#optional-tags

但正如其他人提到的那样,我不建议这样做。

此 HTML“功能”是 HTML5 不是 XML 子集的原因之一。

历史课

我正在维基百科上阅读 HTML 的历史,当我到达有关 IBM 通用标记语言(这是大约 1970 年 SGML 的前身,SGML 是 HTML 的前身)的页面时,我看到了这个文档示例的瑰宝:

   :h1.Chapter 1:  Introduction
   :p.GML supported hierarchical containers, such as
   :ol.
   :li.Ordered lists (like this one),
   :li.Unordered lists, and
   :li.Definition lists
   :eol.
   as well as simple structures.
   :p.Markup minimization (later generalized and formalized in SGML),
   allowed the end-tags to be omitted for the "h1" and "p" elements.

该示例是 从 GML 创建者之一的主页逐字复制的

有趣的是,在 70 年代人们就已经想要自动关闭了。另请注意标签名称与 HTML 中的标签名称相同(

h1
p
ol
li
)。 HAML 模板 带有缩进闭合的语法也浮现在脑海中。


4
投票

我想不出你不能这样做的任何原因,但强烈鼓励在任何地方都使用开始和结束标签以保持一致性。当您决定开始遵循 XHTML 标准时,它也会让您变得更容易。


1
投票

您只需完成最后一个

<p>
标签即可。 示例:

<p align="left">Left
<p align="center">Center
<p align="right">Right</p> <!-If you don't put an ending tag, the text will continue in the same line
<p>End</p>

此外,它速度更快并减少了 HTML 文件的内存。

© www.soinside.com 2019 - 2024. All rights reserved.