【问题标题】:Is it valid to have paragraph elements inside of a heading tag in HTML5 (P inside H1)?在 HTML5 中的标题标签内包含段落元素是否有效(H1 内的 P)?
【发布时间】:2013-11-04 23:50:12
【问题描述】:

在 HTML5 的标头标签中可以包含段落元素吗?

换句话说:这个标记在 HTML5 中是否正确?使用它有什么缺点?

<h1>
    <p class="major">Major part</p>
    <p class="minor">Minor part</p>
</h1>

如果没有,我怎样才能用 CSS 正确地设置这些元素的样式?

【问题讨论】:

  • @user2864740 虽然他确实提供了一个很好的答案,但他应该把它发布在 original question 上。他知道它的存在,as he just made a suggested edit on one of its answers.
  • 我只是想从更广泛的意义上解决这个问题,因为我在实践中经常看到这个问题,我无法通过 Google 或 SA 找到合适的答案。我认为它可以为经验不足的开发人员节省一些时间。所谓的“原始”问题对于我的扩展答案来说太窄了。同样,我的问题具有更广泛的含义。
  • 常识会告诉你事实并非如此,据我所知,这不是 HTML 公然违反常识的领域之一,尽管 it does define "paragraph" slightly differently from common usage of the word。 (我意识到这是自我回答的;我的评论不是针对您,而是针对碰巧问自己同样问题的任何人,旨在鼓励他们考虑片刻。)
  • 当我在 p 中使用 div 时,react 向我尖叫了一次,从那以后我已经吸取了教训,所以我认为它也不适合 SEO

标签: css html w3c


【解决方案1】:

实际上,没有。根据 W3C,此标记不正确。你应该避免使用它。

It is stated 标头元素的正确内容是“短语内容”,即phrasing elements 与普通字符数据混合

换句话说,您可以在 HTML5 的标头标签中使用以下方便的元素:a、em、strong、code、cite、span、br、imgSee the full list here.

如果您尝试验证此标记,

The W3C validator 将给您以下错误:在此上下文中不允许元素 p 作为元素 h1 的子元素。

您应该考虑使用此标记的一个主要缺点是 search engines 可能会错误地解析您的标题标签并错过重要数据。所以这种做法可能对SEO 不利。

如果您想要更好的 SEO 结果,最好在标题元素中仅包含文本数据。但是,如果您还需要应用一些样式,则可以使用以下标记和 CSS:

<h1>
    <span class="major">Major part</span>
    <span class="minor">Minor part</span>
</h1>

<style type="text/css">
    h1 span {
        display: block;
    }
    h1 span.major {
        font-size: 50px;
        font-weight: bold;
    }
    h1 span.minor {
        font-size: 30px;
        font-style: italic;
    }
</style>

请参阅the jsfiddle

如前所述,span 标签在标题元素(h1-h6)内完全有效。您可以对其应用“display:block;”样式,使其呈现为块级元素(每个元素位于不同的行)。它将为您保存一个 br 标签。

当然,您需要根据您的用例更改此 CSS 选择器。

是的,因为stUrb said 在标题中使用段落在语义上是不正确的。 HTML 背后最重要的理念是它必须是先是语义,后是呈现

【讨论】:

  • 解释清楚!它的语义也不正确:在标题中有一个段落。
  • b 标签在标题标签内是否有效?这会对 SEO 产生负面影响吗?
  • 你说的是&lt;b&gt;元素吗?如果是这样,您应该首先避免使用它,因为它是一个表示元素,而 HTML 应该用于信息结构和语义。 CSS 应该在此之上处理表示层。
  • @snow: b 在 HTML5 中并不是纯粹的表现形式,但几乎从来没有出现过在标题中使用 b 的情况。
猜你喜欢
  • 2011-01-13
  • 1970-01-01
  • 2016-05-17
  • 2021-05-11
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 2011-01-15
相关资源
最近更新 更多