实现一个类似掘金Style的markdown目录(js编写文章)

本文介绍了如何使用JavaScript将Markdown的标题转化为类似于掘金文章的目录结构,并实现目录与文章内容的动态关联,包括锚点设置、目录转化、目录优化以及动态滚动关联的实现方法。
摘要由CSDN通过智能技术生成

一、锚点设置
makdown中的#,##,##组成的标题经过marked等工具转化渲染到网页中会成变成h标签,所以当拿到文章详情页后可以从中抽离出所有的目录标签即h1,h2,h3…

const toc: string[] = data.content.match(/<[hH][1-6]>.*?</[hH][1-6]>/g) // 通过正则的方式
复制代码
拿到这些标题之后就可以进行锚点的设置。在H5中关于锚点的做法很多,我们会采用下面这种做法进行设计:

①:设置一个锚点链接 去找喵星人(注意:href属性的属性值最前面要加#)

②:在页面中需要的位置设置锚点

(注意:a标签中要写一个id属性,属性值要与①中的href的属性值一样,不加#)

通过正则匹配到文章中所有的h标签后,循环添加id属性并将div包裹

tocs.forEach((item: string, index: number) => {
let _toc = <div name='toc-title' id='${index}'>${item} </div>
data.content = data.content.replace(item, _toc)
})
复制代码
二、目录转化
我们看到的文章目录一般都是以ul > li > a 标签形式存在的,所以拿到了文章所有的h标签后如何转化为ul或li这类的标签呢?

从控制台中中可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值