想必大家开发网站,可能会用到一些文章或者一段长篇幅的介绍,那么方便用户阅读与定位,这个功能就十分方便啦
最近刚开发的新站中,对于软件的介绍内容,需要做标题的提取与锚点定位,就如下图效果所示:
项目地址在www.macw.com 软件内容展示页面中
这个时候,对于后台动态生成的内容,我们如何去提取标题并且生成目录呢,又如何去确定标题所在文档的高度,并且在图片加载完成后不影响高度的定位?
从思路上,我们首先考虑到如何去使用 后面我们所要写的函数,我们需要提供一些什么?
我们需要提供动态生成文章的容器,与生成标题的标签,例如特定的 .title
类名,或者h2, h3
等标签。
然后,将两个元素作为参数传入我们的函数中,在函数中我们去做一系列的处理
根据标题标签获取所有标签,
并等待所有图片加载后获取标签所在高度放到一个数组中,
创建侧边目录导航加入页面,添加点击功能与锚点定位
下面展示代码
;(function(win, $){
class ContentFixNav {
constructor(wrap, title) {
this.wrapDoms = wrap;
this.titleDoms = title;
this.init();
}
init() {
this.hHeightArr = []; //初始化数组容器存放 锚点高度
this.render(); // 渲染功能
}
render() {
$('body').append($('<div id="content-nav"></div>')); // 生成侧边目录存放的容器 加入页面中
this.contentNav = $('#content-nav'); // 声明容器
let _this = this;
this.titleDoms.each(function(index, el) {
let textArr = $(t