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,里面就是从二级标题开始使用的,没有用一级标题。

实际上,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中就不需要也不应该使用一级标题了,而是从二级标题开始使用。仅仅是从示例文档来体现的话,效果并不是很明显。


Hexo文章建议不要使用Markdown一级标题,而是从二级标题开始
https://sunboyallen.github.io/hexo-heading/
作者
sunboyallen
发布于
2024年2月23日
许可协议