如果内容不是段落,是否有必要将<strong>、<em>、<b>、<i>标签包裹在<p>标签内?

10
例如: 这样是可以的。
<div>
    <p>some <strong>long</strong> text</p>
    <strong>- end -</strong>
    <p>some long text</p>
</div>
或者这个语义上更加正确?
<div>
    <p>some <strong>long</strong> text</p>
    <p><strong>- end -</strong></p>
    <p>some long text</p>
</div>
6个回答

7
如果不是段落,那么就不应该标记为段落。(HTML规范解释了如何读取DTD以确定文档中允许出现哪些元素。)

<p><strong>- 结束 -</strong></p>

...然而,我不知道这是什么。你应该遵循正常的语法规则。

  • 结束 - 这是我从客户那里得到的MS Word文件中每个段落结束的指示。
- Jitendra Vyas
每个段落末尾都有一个<strong> - end - </strong>?那很有趣。如果他们是这样使用它的,并且想要保留内容,那么<br/><strong> - end - </strong></p>就是答案。但如果他们允许,我更喜欢David的方法--只需使用</p>并删除该元素即可。 - T.J. Crowder
你的意思是<strong>标签也是有效的,但我们应该将其包装在<p>标签中。 - Jitendra Vyas

7

学术观点:两者都兼容XHTML。

实际观点:浏览器对此并不在意。


1
如果内容不是段落,则将其标记为段落是不合语义的。
如果您的结束标记旨在阅读,则是否实际上是段落还有待商榷。如果它不是为了阅读而设计的,则不应使用面向阅读的标签(如<strong>)进行标记,而应该放在带有样式表的span或div中,以使字体加粗。

1

规范并没有要求你必须这样做。验证器可以接受你将其放在其他块级容器中。


1

在我看来,"- end -" 可以使用 <hr/> 或者 p:after{content:"-end-"}


p:after{content:"-end-"} 在所有浏览器中都支持吗? - Jitendra Vyas
1
不,它不是,但如果它纯粹是表现性的,这可能并不关键。 - graphicdivine

0
正如你所提到的,下方的写法语义上更加正确,因为 <strong> 标签并不是块级元素,这意味着你需要将其包裹在 <p> 中。否则,我相信当你尝试验证你的HTML时会遇到问题。

strong元素可能是其子元素的众多元素中的一个,除了 p 元素以外。此外,“有效性”和“语义”是非常不同的东西。 - Quentin
同意。但是如果只使用<strong>这是粗体</strong>,你将会遇到验证HTML的问题。 - Rob Such
2
在问题中给出的例子中,strong 元素是 div 元素的子元素...这是有效的。 - Quentin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接