【问题标题】:Can each article element have it's own nav?每个文章元素都可以有自己的导航吗?
【发布时间】:2023-03-14 03:51:01
【问题描述】:

我正在考虑这种首页布局,其中“主导航”遍布整个页面,显示每个类别的最新文章,如下所示:

<article>
    <nav><a href="/elephants">Elephants</a></nav>
    <h2><a href="/elephants/borneo.htm">The Borneo Elephant</a></h2>
<p>...</p>
</article>
<article>
    <nav><a href="/hippos">Hippos</a></nav>
    <h2><a href="/hippos/malgasy.htm">The Malgasy Hippo</a></h2>
<p>...</p>
</article>
<article>
    <nav><a href="/rhinos">Rhinos</a></nav>
    <h2><a href="/rhinos/white.htm">The White Rhino</a></h2>
<p>...</p>
</article>

这在语义上正确吗?

【问题讨论】:

  • 文章的内容应该在&lt;article&gt; 标签内...您似乎在使用标签来指示链接是指向语义不正确的文章的超链接恕我直言。要么你有一篇文章,要么你有一个导航设备。每篇文章都有自己的导航帮助(我想在文章中导航)没有任何问题,但当前的格式似乎是错误的(没有进一步解释你背后的推理)
  • 实际上它们是摘录(为了清晰起见更新了代码),它说here 和其他地方可以使用
    摘录。否则无论如何,首页上都不会出现“文章”......我不介意但不知道该使用什么。

标签: html nav semantic-markup


【解决方案1】:

如果article 元素包含nav 元素,则此nav 表示此article 的导航。这可以用于文章的目录,或者在文章被分成多个页面时用于分页。

你的例子没有多大意义,它的轮廓很乱,不是很清楚/不可用:

1. implied heading from <article>
  1.1 implied heading from <nav>
2 "The Borneo Elephant"
3. implied heading from <article>
  3.1 implied heading from <nav>
4. "The Malgasy Hippo"
5. implied heading from <article>
  5.1 implied heading from <nav>
6. "The White Rhino"

如果这确实是您网站的导航菜单,您应该使用 one nav

然而,为每个导航项的最后一篇文章添加摘录并没有明显的解决方案(我猜这是一种相当不常见的方式)。这些通常是两个独立的部分,即一个用于导航的nav,一个用于最近的文章的section

<nav>
  <!-- <h1>Navigation</h1> -->
  <ul>
    <li><a href="/elephants">Elephants</a></li>
    <li><a href="/hippos">Hippos</a></li>
    <li><a href="/rhinos">Rhinos</a></li>
  </ul>
</nav>

<section>
  <h1>Recent articles</h1>

  <article>
    <header>Category: <a href="/elephants">Elephants</a></header>
  </article>

  <article>
    <header>Category: <a href="/hippos">Hippos</a></header>
  </article>

  <article>
    <header>Category: <a href="/rhinos">Rhinos</a></header>
  </article>

</section>

假设您无法将这些部分分开:用户可能不清楚此摘录仅代表该类别/部分的一篇(即最新)文章;所以你可能会为此添加一些解释,所以也许为每个导航菜单项使用一个部分可能会起作用,例如:

<nav>
  <h1>Navigation</h1>

  <section>
    <h2><a href="/elephants">Elephants</a></h2>
  </section>

  <section>
    <h2><a href="/hippos">Hippos</a></h2>
  </section>

  <section>
    <h2><a href="/rhinos">Rhinos</a></h2>
  </section>

</nav>

在每个section 中,您可以添加摘录,例如,通过在section 中引入另一个标题:

  <section>
    <h2><a href="/elephants">Elephants</a></h2>
    <section>
      <h3>Newest "Elephants" article</h3>
      <article>
        <!-- excerpt -->
      </article>
    </section>
  </section>

或者只是添加一些文本:

  <section>
    <h2><a href="/elephants">Elephants</a></h2>
    <p>Newest "Elephants" article:</p>
    <article>
      <!-- excerpt -->
    </article>
  </section>

但我建议反对所有这些(将导航与最新文章列表混合)并使用单独的部分(如我的第一个 sn-p 中)。

【讨论】:

  • 其实并不少见,很多报纸和杂志都是这样组织的(虽然对 html5 不是太密集,但大多数只是到处使用 div)。每个部分甚至可以有不止一篇文章,比如最新的 3 或 5 篇或其他。并且“导航”将充当某种迷你面包屑(或完整的,有足够空间的地方)。但我确实明白大纲被搞砸了,为所有分类的小部分创建了很多部分,并且不那么突兀的元素可能会更好。
  • @LucianDavidescu:你知道这样一个网站的例子吗?我不确定我是否理解“迷你面包屑”部分。我会想象这样的“最近的文章”列表代表网站的(主要)导航。
  • 确实,大多数都有“主导航”,但我根本不想使用。我所说的只是展示每个类别的最新作品,例如:newyorker.com
  • @LucianDavidescu:我明白了。我认为这是文章元数据的一部分(如博客文章的标签),所以我会像我的答案中的第一个示例一样标记它:articleheader 中的类别链接;不使用nav。 (就像他们在 newyorker.com 上做的一样,使用 Schema.org 的 articleSection 属性,如果你想使用 Schema.org。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 2011-05-21
  • 1970-01-01
  • 2019-02-02
相关资源
最近更新 更多