何时<p>标记为空?</p>

时间:2013-03-05 05:06:16

标签: html cross-browser w3c

W3.org states

  

我们不鼓励作者使用空P元素。

     

用户代理应该   忽略空P元素。

我们如何定义

<p> </p>标记之间的空格字符是否计数?

<p> </p>之间的换行符怎么样?

3 个答案:

答案 0 :(得分:6)

The HTML4 spec defines an empty element as one that has no content.自动关闭代码肯定会定义空元素,例如<br/><img/>。我认为期望紧跟一个结束标记的开始标记(例如<p></p>)也定义一个空元素是非常合理的。 <p> </p>是否符合“空”的要求可能取决于用户代理,但让我们看一下the inline content model definition from the spec:

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

“空”内容是包含以下 none 的内容:

上面的空格字符是什么? Yes, it's #PCDATA,因此我推断<p> </p> 是一个空的P元素。而且无论HTML4规范的劝阻如何,<p></p>, <p> </p>, and <p/> are all a perfectly valid HTML fragments


Such elements are now called "void" by the HTML5 spec.

@Alohci clarifies:

  

The term "void elements" in HTML5指的是那些实例永远不会有像br和img这样的内容的元素类型,而不是那些碰巧没有内容的实例。所以P元素的实例永远不会构成“空元素”。

HTML5规范没有对避免“空”或“无效”P元素做出此类评论:

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

答案 1 :(得分:1)

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

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

但是,w3c对此以及特定浏览器供应商所说的内容往往是一个非常不同的东西。根据我的知识,大多数浏览器都会尊重这一点,但有些人仍然可以将“p”标签视为内容,而不是内容。

最佳做法,使用CSS提供间距和休息时间。如果只需要换行符,请在段落上使用“br”标记。 “p”标签是用于语言结构“段落”的语义标签,因此不鼓励使用它作为布局元素。

答案 2 :(得分:1)

据我所知,空<p>代码包含<p></p><p/><p /><p> </p>

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

<p>标记用于包含一段文字。