4

W3.org states:

We discourage authors from using empty P elements.

User agents should ignore empty P elements.

How do we define empty?

Does a space character between the <p> </p> tags count?

What about a new-line character between <p> </p>?

4

3 回答 3

7

HTML4 规范将空元素定义为没有内容的元素。自闭合标签明确定义了空元素,例如<br/><img/>。我认为期望一个开始标签紧跟一个结束标签是非常合理的,例如<p></p>也定义了一个空元素。是否<p> </p>符合“空”的条件可能取决于用户代理,但让我们看一下规范中的内联内容模型定义:

<!-- %inline; covers inline or "text-level" elements -->
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

“空”内容是不包含以下任何内容的内容:

那么空格字符是上述任何一个吗?是的,它是 #PCDATA,所以我会推断这不是<p> </p>一个空元素。并且不管 HTML4 规范的劝阻,,都是完全有效的 HTML 片段P<p></p><p> </p><p/>


这些元素现在被 HTML5 规范称为“void”。

@Alohci 澄清:

HTML5 中的术语“void 元素”指的是那些其实例永远不会有 br 和 img 等内容的元素类型,而不是碰巧没有内容的实例。因此 P 元素的实例永远不会构成“无效元素”。

HTML5 规范没有对避免“空”或“空”P元素做出这样的评论:

......我真的不会太担心它。

于 2013-03-05T05:12:55.813 回答
1

从技术角度来看,空白是一回事。它占用内存并有自己的字符代码。它是一个只包含空格的字符。

也就是说,对于大多数浏览器来说,空格和换行符是一样的。从这个角度来看,带有任何一个的“p”标签都将被视为“某物”。

然而,W3C 对此的说法和特定浏览器供应商所说的通常是完全不同的事情。据我所知,大多数浏览器都尊重这一点,但有些浏览器可能仍将“p”标签视为有内容,而实际上它没有内容。

最佳实践是使用 CSS 来提供间距和中断。如果只需要换行符,请在段落上使用“br”标签。“p”标签是与语言结构“段落”一起使用的语义标签,因此不鼓励将其用作布局元素。

于 2013-03-05T05:14:12.343 回答
1

<p>据我所知,一个空标签将包括<p></p>, <p/>,<p /><p> </p>.

<p><br /></p>并且<p>&nbsp;</p>(如果你想获得真正的技术性,<p> </p>因为所有 Unicode HTML 空白在技术上都使用 1-4 个字节)在技术上不会是空的,但肯定不会鼓励这样使用它,如果你是,你应该看看为什么,因为它可能不是最佳选择。

<p>标签旨在包含一段文本。

于 2013-03-05T05:15:40.577 回答