什么时候<P>标签被认为是空的?

Pac*_*ier 4 html w3c cross-browser

W3.org声明:

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

用户代理应忽略空P元素.

我们如何定义

<p> </p>标签之间的空格字符是否重要?

新线之间<p> </p>怎么样?

Mat*_*all 7

HTML4规范将空元素定义为没有内容的元素.自闭标签肯定定义空元素,如<br/><img/>.我认为期望开始标记紧跟一个结束标记是非常合理的,例如<p></p>也定义一个空元素.是否<p> </p>合格为"空"可能取决于用户代理,但让我们看看规范的内联内容模型定义:

<!-- %inline; covers inline or "text-level" elements -->
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
Run Code Online (Sandbox Code Playgroud)

"空"的内容是一个包含没有如下:

上面的任何一个空格字符都是?是的,这 #PCDATA,所以我推断<p> </p>不是空的P元素.且不论HTML4规范的沮丧,<p></p>,<p> </p>,和<p/>都是一个完全有效的HTML片段.


这些元素现在被HTML5规范称为"无效".

@Alohci澄清:

HTML5中的术语"void elements"指的是那些实例永远不会有像br和img这样的内容的元素类型,而不是那些碰巧没有内容的实例.所以P元素的实例永远不会构成"空元素".

HTML5规范没有做出关于避免"空"或"无效" P元素的评论:

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

  • 浏览器实际上并不尊重HTML 4.01建议,因为人们可以轻松地检查例如`<hr> <p> </ p> <hr>`,这与`<hr> <hr>`不同,但实际上.所以HTML5 CR反映了现实.这个问题只是理论上的问题,当HTML 4.01正式被HTML5取代时,它甚至不再成为一个理论问题. (2认同)
  • HTML5中的术语"Void元素"指的是那些实例可以*永远不会拥有像br和img这样的内容的元素类型,而不是那些碰巧没有内容的实例.所以P元素的实例*永远不会构成"空元素". (2认同)