为什么要添加这个导航功能

之前在文章《Markdown是怎样接管我的各种的写作工作的》提到过如何在为知笔记中开启markdown功能以及如何给markdown定制格式,但是在使用为知笔记的过程中,我发觉文章内的目录导航,为知笔记提供的还是不太好用——没有分层和索引序号。

因此,我决定扩展这个markdown插件,让为知笔记显示markdown样式的笔记跟我的博客一样有一个自动导航的目录。

如何在为知笔记中引入样式和脚本

首先,找到为知笔记的markdown插件,如下图所示:

打开其中的WizNote-Markdown.js,我们找到其中加载jscss部分的代码如下:

function initMarkdown() {appendCssSrc("markdown\\GitHub2.css");appendScriptSrc('HEAD', "text/javascript", "markdown\\marked.min.js");appendScriptSrc('HEAD', "text/javascript", "google-code-prettify\\prettify.js");appendScriptSrc2('HEAD', "text/javascript", "markdown\\jquery.min.js", false, function() {appendScriptSrc('HEAD', "text/javascript", "wiznote-markdown-inject.js");});
}function onDocumentComplete() {if (isMarkdown()) {initMarkdown();}
}

添加自动目录的基本原理

大概的原理就是遍历整个内容,找到其中的标题标签,即h1h2等,然后把这些标题插入到一个容器中,针对这个容器设置绝对定位的css即可。主要代码如下:

o = s.find(':header');
if (o.length > p) {r = false;var t = s.find('h2');var u = s.find('h3');if (t.length + u.length > p) {q = false;//如果目录数目超过制定的值,只显示更高一级的目录}
};
o.each(function (t) {var u = $(this),v = u[0];var title=u.text();var text=u.text();u.attr('id', 'autoid-' + l + '-' + m + '-' + n)if (v.localName === 'h2') {l++;m = 0;if(text.length>14) text=text.substr(0,12)+"...";j += '<li><span>' + l + '&nbsp&nbsp</span><a href="#' + u.attr('id') + '" title="' + title + '">' + text + '</a><span class="sideCatalog-dot"></span></li>';} else if (v.localName === 'h3') {m++;n = 0;if(q){if(text.length>12) text=text.substr(0,10)+"...";j += '<li class="h2Offset"><span>' + l + '.' + m + '&nbsp&nbsp</span><a href="#' + u.attr('id') + '" title="' + title + '">' + text + '</a></li>';}} else if (v.localName === 'h4') {n++;if(r){j += '<li class="h3Offset"><span>' + l + '.' + m + '.' + n + '&nbsp&nbsp</span><a href="#' + u.attr('id') + '" title="' + title + '">' + u.text() + '</a></li>';}}
});

滚动定位

另外,使用了bootstrap插件的滚动定位功能:

b.data('spy', 'scroll');
b.data('target', '.sideCatalogBg');
$('body').scrollspy({target: '.sideCatalogBg'
});

效果如下:

最终效果

在markdown中添加的js代码

function initMarkdown() {appendCssSrc("markdown\\GitHub2.css");appendCssSrc("marvin-wizNote-plugin\\marvin.nav.css");  appendScriptSrc('HEAD', "text/javascript", "markdown\\marked.min.js");appendScriptSrc('HEAD', "text/javascript", "google-code-prettify\\prettify.js");appendScriptSrc2('HEAD', "text/javascript", "markdown\\jquery.min.js", false, function() {appendScriptSrc('HEAD', "text/javascript", "wiznote-markdown-inject.js");appendScriptSrc2('HEAD', "text/javascript", "marvin-wizNote-plugin\\bootstrap.min.js", false, function(){appendScriptSrc('HEAD', "text/javascript", "marvin-wizNote-plugin\\marvin.nav.js");});});
}

注意,插件之间依赖的写法。其中bootstrap依赖于jquery,而我们的导航插件依赖于bootstrap

最终的效果

对应的css文件和js文件

  • Wiz_sideToolbar.gif
  • Wiz_marvin.nav.js
  • Wiz_marvin.nav.css

转载于:https://www.cnblogs.com/marvin/p/ExtendWizNoteAutoNnavigation.html

如何给你的为知笔记添加一个漂亮的导航目录相关推荐

  1. 【转】博客美化(3)为博客添加一个漂亮的分享按钮

    阅读目录 1.社会化分享 2.选择一个分享按钮 3.添加到博客园博客 博客园美化相关文章目录:博客园博客美化相关文章目录 在前2篇博客"博客美化(1)基本后台设置与样式设置"与&q ...

  2. html怎么把一段文字设置为连接到下一个网页的按钮,为主页添加一个漂亮的按钮(上)_html...

    是不是在做网页时,为按钮的制作发过愁啊?用图片做按钮的话,影响速度,不用图片,网页里自带的按钮真的是不感恭维,真是最近比较烦,其实,有了css(Cascading Style Sheet的缩写,层叠样 ...

  3. 软件工程 - 版本管理 - git 的基本实用方法 - 添加一个完整的项目目录的命令的细微差别

    1 如何创建一个新的本地git 仓库 $ git init Initialized empty Git repository in D:/project/weixin_trip_demo/.git/ ...

  4. 为知笔记:优秀国产知识管理软件的使用心得

    谨以此文献给和我一样需要一款方便好用的知识管理软件的人.写这篇文章,只是想把自己喜欢的东西分享给更多人,绝非广告.如果你用的其他同类软件,并且看完后仍然觉得为知笔记不够好,请自动忽略本文. 欢迎通过此 ...

  5. 为知笔记,讯飞语音平台上的故事

    为知笔记,移动互联时代资料管理的精品云服务 无论是团队还是个人,我们一直期望有一款云服务产品,不仅能即时保存.随时查找各种信息,还能方便地回顾和整理,与伙伴进行传递.共同撰写与修改,甚至基于这些资料展 ...

  6. 有道云笔记、印象笔记、为知笔记、麦库记事国内四大笔记软件全方面比较

    有道云笔记.印象笔记.为知笔记.麦库记事国内四大笔记软件全方面比较: 我第一个使用的笔记类软件是有道云笔记,当时的目的只是想方便的保存网页,以便下次看,免得存在本地为一个网页文件还附带一个文件夹,或者 ...

  7. JavaScript 添加一个元素标签

    JavaScript 添加一个元素标签 文章目录 JavaScript 添加一个元素标签 代码 效果 代码 <!DOCTYPE html> <html><head> ...

  8. 怎么在添加为知笔记编辑器/为知笔记怎么用其他编辑器编辑/为知笔记怎么才能用Word/notepad++编辑

    1.为什么要添加外部编辑器 为知笔记自身提供了基础的编辑功能,足够满足一般用户的笔记需要.但有的用户有特殊的需求,需要编辑很多特殊格式与内容的文档.这时候一方面可以采取先用其他编辑器如Word.VIM ...

  9. ubuntu安装有道云笔记_Ubuntu 安装Node 10.16 跑 Nodeppt 加Hexo博客再来个为知笔记私有云...

    几个月前偶然看到NodePPT的霸气标语 U work so hard, but 干不过 write PPTs 当时觉得挺好玩的,后来在自己的Windows笔记本上安装了,效果也确实不错,但是在Ubu ...

最新文章

  1. AI产业链分布图曝光:1040个玩家,BAT率先步入应用
  2. Windows XP Mode
  3. Linux下统计局域网流量
  4. 什么是随机存取_SRAM存储器是什么存储器
  5. kotlin为什么比java编译慢_为什么Kotlin编译速度比Scala快? [关闭]
  6. Java 异常处理(标准抛异常、异常处理、多异常、Finally、多线程异常处理、获取异常的堆栈信息、链试异常、自定义异常)
  7. DC中的一些命令随笔
  8. 前端遮罩层实现_cocos creator--游戏开奖功能组件《刮刮卡》特效实现
  9. 在java编程中会使用汉字字符_在java程序中将中文字符写入文件中或者是将文件中的中文字符读入程序时会出现乱码或者一串“?”,求...
  10. Linux 下的任务管理 —— ps、top
  11. Word导出带目录的PDF
  12. 电脑屏幕网页字体大小怎么调整?
  13. nbiot和2g_nb-iot和4G谁才是物联网未来的趋势?不同行业应该如何选择?
  14. php errorcode,errorCode.php
  15. pandas 行列转换
  16. happen-before讲解
  17. 经典点云配准算法:迭代最近点算法ICP(Iterative Closest Point)
  18. Round 1—数据结构基本概念
  19. jquery ui table
  20. DAMA数据治理与数据质量--非结构化数据的数据质量管理

热门文章

  1. java的方法什么时候加载,java – JVM什么时候加载类?
  2. 华为设备不会配置静态路由怎么办?
  3. 还在担心服务挂掉?Sentinel Go 让服务稳如磐石
  4. 如何基于 K8s 构建下一代 DevOps 平台?
  5. 云原生应用实现规范 - 初识 Operator
  6. 从零开始入门 K8s | 应用编排与管理
  7. linux的mysql服务器密码忘了,怎么解决?
  8. c语言是以文件为单位编译,c语言从头开始(三:编译器工作原理) (我们还可以自己编写头文件后缀是xx.h并把它当前代码文件所在目录我们要用就可以直接通过下面代码使用)...
  9. vim windows版本_大概是篇Vim入门教程(1): 基本的一些东西
  10. 厦门大学和福州大学计算机专业哪个好,福州大学和厦门大学的土木工程哪个好...