生成文章目录|青训营笔记

149 阅读1分钟

这是我参与「第五届青训营 」笔记创作活动的第12天

生成文章目录

思路

基于文章的标题生成目录,换句话说,就是将h1,h2,h3等标签的dom层次转化为树形结构。

实现

首先要准备数据。

const list=[]

要实现类似如下的结构

[{
	title:'标题',
    href:'',
    children:[{
        title:'标题',
        href:''
    }]
}]

要生成目录结构,首先要获取文章的dom结构,现将标签放入数组。然后对齐进行筛选清晰,之留下我们需要的标题元素,即h1,h2,h3等标签,筛选完后放入另一个数组。

之后对数组进行遍历,提取我们需要的属性,以便对树形数据进行赋值,然后调用Array.push()将对象添加进数组内。

将文章目录与文章关联

设置滚动

监听页面滚动,计算页面的相对位置,来使目录滚动。

设置目录跳转文章对应位置

可以使用锚点法,为文章的标题添加id,再在目录的连接中添加#开头的标题id

这样一来,点击目录是,页面就会滚动到指定位置。