我有一个只包含以下HTML代码的页面:
<article>
<nav>
<a href="test.html" rel="parent">Back</a>
</nav>
<header>
<h2>Test</h2>
</header>
<p>Test</p>
</article>
当我尝试validate it时,为什么会收到此警告
Warning:文章缺少标题。考虑对add identifying headings to all articles使用
h2
-h6
元素。
从第10行第2列;到第10行第10列
<body>↩↩↩<article>↩ <na
发布于 2018-06-06 05:51:44
原因是分段内容元素(在您的示例中为nav
)位于标题内容元素(在您的示例中为h2
)之前:
<!-- A -->
<article>
<nav></nav>
<h2>Test</h2>
</article>
如果您切换它们,验证器不会报告警告:
<!-- B -->
<article>
<h2>Test</h2>
<nav></nav>
</article>
请参阅文档中概述这些代码段生成的部分:
<!-- A -->
- article (no heading)
-- nav (no heading)
- "Test" (h2 of an implied section, on the same level as the article)
<!-- B -->
- "Test" (h2 of article)
-- nav (no heading)
规范参考
Creating an outline描述了该算法。我认为相关的步骤是这一步(但我不习惯阅读这样的算法,所以最好还是持保留态度):
输入 element时的
运行以下步骤:
current outline owner
不为null,请运行以下子步骤:1. If the `current section` has no heading, create an implied heading and let that be the heading for the `current section`.
据我所知,这就是例子“A”的情况:
该算法进入一个分段内容元素(article
).
nav
),它找到另一个分段内容元素(nav
),并立即输入它,所以引用的步骤适用。
article
仍然是current outline owner
和current section
,所以子步骤适用(因为<代码>D34不是null)。
current section
(→article
)没有标题(它还没有找到h2
),因此会创建一个隐含的标题。所以article
有一个标题,但它不是你的h2
.我认为该规范在文本(I was surprised by this, too)中也会很好地描述这一点。
验证器问题跟踪器中的相关帖子:Warning issued when headers are nested in an article
https://stackoverflow.com/questions/50706583
复制相似问题