Hexo 文章建议不要使用 Markdown 一级标题,而是从二级标题开始
逻辑是这样的。首先,按照 MDN 的规范,一个 HTML 网页,建议最多只有一个<h1>
标签,作为页面主要标题。虽然在技术上是可以在 HTML 文件里面写多个<h1>
标签的,但是多个<h1>
会降低标题的语义价值,破坏文档结构。SEO 也是不推荐使用多个<h1>
标签。
在 Markdown 也是同理。使用一个一级标题#
作为主标题,不建议在一个 md 文件中使用多个一级标题。Markdown 渲染为 HTML 的时候,标题的层级一般就是对应的。一级标题对应<h1>
,二级标题对应<h2>
,以此类推。
在 Hexo,是一个 Markdown 文件作为一篇文章,而文章的标题,是在 Front-matter 中进行配置,title
就是标题。这样的话,Markdown 的一级标题相应的语义功能就用不到了,也就不应该再使用了。需要使用 Markdown 标题的时候,也是从二级标题开始。
实际上,Hexo 本身的推荐也是不在文章使用 Markdown 一级标题,而是从二级标题开始。在hexo init
之后,可以看到他的示例文章hello-world.md
,里面就是从二级标题开始使用的,没有用一级标题。
1 |
|
这里只展示前面的部分。
实际上,Hexo 大多数主题,就是把 Front-matter 中的title
渲染为<h1>
,然后 Markdown 中的标题渲染为 HTML 对应的标题层级。
这里说的是大多数主题。像是 NexT 主题,目前则是把 Markdown 文章中的标题降一级渲染处理。也就是说,Markdown 的一级标题会渲染为<h2>
,后面的也都是都降一级处理。原先的 NexT 应该没有这样处理的,好像是后来修改成这样的。在 NexT 的 GitHub 有相关的 discussion。搜索的关键词如下。
hexo 多个 h1 tag
个人感觉,NexT 这种修改不是很合适。不过主要还是 Hexo 的锅。本身在 Markdown 使用多个一级标题就不是好的习惯。Hexo 要做的应该是在文档中,明确给出具体的建议。因为既然在 Front-matter 中定义了标题的值了,那么在 Markdown 中就不需要也不应该使用一级标题了,而是从二级标题开始使用。仅仅是从示例文档来体现的话,效果并不是很明显。