p 标签包含块级元素?

标签的语义都是见仁见智,只要不是特别反人类,细微的理解差异,是可以接受的。像锚点标记(链接)<a> (anchor) 以前通常被当作内联元素,现代网页越来越多地采用了块状可点击区域的设计,HTML 5 里就允许 <a> 作为块级元素来用。

一般来说,HTML 标签分为内联元素(a span strong em sup sub code)和块级元素,对于包含问题,只有一条颠扑不破的真理——内敛元素里面不能放块级元素。

p 是一个块级元素,所以它放内联元素 input (除了 form fieldset legend 以外,表单相关的元素都是内联的)是完全没有问题的。

大部分块级元素都能包含其他块级元素,但一些用于排版的,有明确语义的块级元素(h1 ~ h6 address dt dd 等),一般不再放置其他块级元素(因为真的需要那么复杂的排版时,还不如自己造一个 div ,并且通过 className 来让语义更明确)。

其中 p 尤为特殊,基本上完全容不得其他块级元素。因为作为一个“段落”,通常是连续性文字的集合,如果放了块级元素进去,明显就已经把文字拆成两段了。事实上,在几乎所有浏览器里,

<p><div></div></p>

都会被处理成

<p></p><div></div>

在 HTML 4, HTML 5 里, pli 都可以自闭合,也就是说,不一定要加上结束标签。所以浏览器的这种处理,也是有道理的。

发表评论
* 昵称
* Email
* 网址
* 评论