分享好友 最新动态首页 最新动态分类 切换频道
outline.js - 自动生成文章导读(Table of Contents)导航的 JavaScript 工具
2024-12-26 12:09
# outline.js [![npm version](https://img.shields.io/npm/v/@yaohaixiao/outline.js)](https://www.npmjs.com/package/@yaohaixiao/outline.js) ![Gzip size](http://img.badgesize.io/https://cdn.jsdelivr.net/gh/yaohaixiao/outline.js/outline.min.js?compression=gzip&label=gzip%20size) [![prettier code style](https://img.shields.io/badge/code_style-prettier-07b759.svg)](https://prettier.io) [![Coverage](https://codecov.io/gh/yaohaixiao/outline.js/branch/master/graph/badge.svg)](https://codecov.io/gh/yaohaixiao/outline.js) [![npm downloads](https://img.shields.io/npm/dt/@yaohaixiao/outline.js)](https://npmcharts.com/compare/@yaohaixiao/outline.js?minimal=true) [![MIT License](https://img.shields.io/github/license/yaohaixiao/outline.js.svg)](https://github.com/yaohaixiao/outline.js/blob/master/LICENSE) outline.js - 自动生成文章导读(Table of Contents)导航的 JavaScript 工具。会自动分析文章中的标题( h1~h6 )标签,并生成文章段落层次结构的导读导航菜单。 ## 创作灵感 AnchorJS 是 outline.js 的创作灵感来源。既然 AnchorJS 可创建标题的链接,为什么不直接给文章生成一个文章导读(Table of Contents)导航呢? 于是便有了 outline.js。 ## 特点 - 原生 JavaScript 编写,无需任何依赖; - 支持 UMD 规范; - 支持 E6 模块,提供功能独立的 ES6 模块; * Anchors 模块:类似 AnchorJS 基础功能模块,自动分析段落层级 * Drawer 模块:独立的侧滑窗口模块 * Chapters 模块:独立的导航菜单模块; * Toolbar 模块:独立的固定定位的工具栏模块; - 拥有 AnchorJS 基础功能; - 支持中文和英文标题文字生成ID; - 支持生成独立的侧边栏导航菜单; - 支持直接在文章中指定的 DOM 元素内生成文章导读导航(fixed 或者 sticky 布局); - 自动分析标题关系,生成段落层级索引值; - 支持配置自定义工具栏按钮和按钮的回调函数; * 支持针对(github 项目的)API 文档的 tags 和 issues 等按钮的跳转; * 支持自定义图标的自定义按钮,并且支持配置自定义按钮的触发事件和事件处理器; - 自动为文章页面添加通用的打印样式; - (在配置打印样式后)有纯净的阅读视图(按ESC键可退出); - 针对超长文章,采用 time slice 机制优化性能; - 可以作为 jQuery 插件使用; - 界面简洁大方; - 配置灵活,丰富,让你随心所欲掌控 outline.js; 说明:outline.js 的 Wiki 中介绍了实现自动计算段落层次的算法 ## Examples outline.js 的支持的滚动元素可以是 Window 窗口,也可以是某个 DOM 元素。 ### 窗口滚动 ![独立侧滑菜单](https://yaohaixiao.github.io/outline.js/img/screen-shot.png) * 独立侧滑菜单:[https://yaohaixiao.github.io/outline.js/examples/relative.html](https://yaohaixiao.github.io/outline.js/examples/relative.html) * WordPress:[http://www.yaohaixiao.com/blog/publish-subscribe-pattern-in-javascript/](http://www.yaohaixiao.com/blog/publish-subscribe-pattern-in-javascript/) ![sticky 定位](https://yaohaixiao.github.io/outline.js/img/sticky.png) * sticky 定位:[https://yaohaixiao.github.io/outline.js/examples/sticky.html](https://yaohaixiao.github.io/outline.js/examples/sticky.html) ![fixed 定位](https://yaohaixiao.github.io/outline.js/img/fixed.png) * fixed 定位(不显示按钮工具栏):[https://yaohaixiao.github.io/outline.js/examples/fixed.html](https://yaohaixiao.github.io/outline.js/examples/fixed.html) ### DOM 元素滚动 ![flex 布局](https://yaohaixiao.github.io/outline.js/img/flex.png) * flex 布局(超长文章):[https://yaohaixiao.github.io/outline.js/examples/flex.html](https://yaohaixiao.github.io/outline.js/examples/flex.html) ### Anchors 模块独立调用 * Anchors 模块(仅给文章的标题添加):[https://yaohaixiao.github.io/outline.js/examples/anchors.html](https://yaohaixiao.github.io/outline.js/examples/anchors.html) ## 浏览器支持 | [<img src=https://download.csdn.net/download/weixin_63553972/"https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_48x48.png" alt="IE / Edge" width="24px" height="24px" />](https://github.com/yaohaixiao/outline.js/)</br>IE / Edge | [<img src=https://download.csdn.net/download/weixin_63553972/"https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_48x48.png" alt="Firefox" width="24px" height="24px" />](https://github.com/yaohaixiao/outline.js/)</br>Firefox | [<img src=https://download.csdn.net/download/weixin_63553972/"https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_48x48.png" alt="Chrome" width="24px" height="24px" />](https://github.com/yaohaixiao/outline.js/)</br>Chrome | [<img src=https://download.csdn.net/download/weixin_63553972/"https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_48x48.png" alt="Safari" width="24px" height="24px" />](https://github.com/yaohaixiao/outline.js/)</br>Safari | [<img src=https://download.csdn.net/download/weixin_63553972/"https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_48x48.png" alt="Opera" width="24px" height="24px" />](https://github.com/yaohaixiao/outline.js/)</br>Opera | |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | IE11, Edge | last 10 versions | last 10 versions | last 10 versions | last 10 versions | ## 安装说明 outline.js 提供多种安装方式的支持: npm 安装、加载 CDN 资源、以及本地资源调用。 ### npm install ```shell $ npm install -S @yaohaixiao/outline.js ``` ### script 可以根据项目的实际情况,选择调用 CDN 文件或者本地文件。 #### CDN ```html <link href=https://download.csdn.net/download/weixin_63553972/"https://cdn.jsdelivr.net/gh/yaohaixiao/outline.js/outline.min.css" rel="stylesheet" /> <script src=https://download.csdn.net/download/weixin_63553972/"https://cdn.jsdelivr.net/gh/yaohaixiao/outline.js/outline.min.js"></script> ``` #### 调用本地JS文件 ```html <link href=https://download.csdn.net/download/weixin_63553972/"path/to/outline.min.css" rel="stylesheet" /></script> <script src=https://download.csdn.net/download/weixin_63553972/"path/to/outline.min.js"></script> ``` ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Outline.js</title> <link href=https://download.csdn.net/download/weixin_63553972/"https://cdn.jsdelivr.net/gh/yaohaixiao/outline.js/outline.min.css" rel="stylesheet" /> </head> <body> <main>
最新文章
AI换脸技术开源,AI防诈用魔法打败魔法 #人工智能 #AIGC #科技与狠活 #网络诈骗防范常识 #度小满
{{if !data.isVip && data.isActText}}{{else if !data.isVip && !data.isActText}}{{else}}{{if !data.isNormalVip}}{{if data.expiredVip && data.isActText}}{{else if data.expiredVip && !data.isActText}}{{else}}{{/if}}{{else if d
2024年最值得推荐的三款安卓手机解锁软件【热门】
为了保护用户的隐私及数据安全,iOS和Android设置了各种安全措施,比如password, PIN, pattern, fingerprint、面部ID等。但是,由于各种密码实在太多,人们难免遗忘密码。目前Android设备是使用人数最多,因此,关于Android屏幕锁定解除工
23个Python爬虫开源项目代码_python开源爬虫
做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就
4924全年免费资料大全|词语释义解释落实
  当今社会,信息量巨大,资料的数量也日益膨胀。在这样的环境下,能够迅速获取有价值的资料变得尤为重要。本文将为广大的学习者和爱好者提供一份详尽的全年免费资料大全清单。本资料大全内容涵盖了各个行业和领域,为您提供丰富的学习资
2024B站永不收费:共享文化的光辉时刻
在数字时代的浪潮中,内容平台的收费模式越来越普遍,而B站(哔哩哔哩)却坚定地走上了一条不同的道路。2024B站永不收费的举措,不仅是对用户的一种承诺,更是对整个互联网文化生态的深刻思考。作为一个以用户生成内容为主的平台,B站始终
360浏览器游戏加速全攻略:优化设置提升游戏体验
在这个快节奏的时代,游戏成为了许多人放松心情娱乐休闲的重要方式。当你在玩游戏时,是否会遇到游戏加载缓慢卡顿不流畅的情况?或者是否曾为网络延迟游戏中的界面反应迟钝而烦恼不已?为了让你不再受这些困扰,我们特地为大家准备了这份《
Java最新程序员之天梯排行榜,你在哪一级?(1),字节跳动Java开发
学习视频:大厂面试真题:本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录需要这份系统化的资料的朋友,可以点击这里获取伯纳斯李:万维
DAB模块:开启智能生活新纪元
随着科技的飞速发展,数字化、网络化、智能化已经成为我们生活的重要组成部分。DAB模块,作为新一代的无线通信技术,凭借其独特的优势和功能,在日常生活中发挥了无可替代的作用,极大地丰富了我们的生活。以下从七个方面详细介绍DAB模块在
2024-2029年中国船舶租赁行业发展前景与投资战略规划分析报告
权威数据来源一手调研资料调研方法直接观察法(实地走访、网络观察)访谈调查法(个别面访、集体面访、电话访谈、视频访谈、小组座谈)问券调查法(在线问券、电子邮件问券、入户分发等)会议调查法(参加博览会、展览会、高峰论坛、研修会
2024年旧小区改造最新消息问题
材料进场验收流程:1、通知施工方材料验收的时间木工材料进行验收最好是安排在材料进场时立即进行,所以,约定验收时间非常必要,以免出现材料进场时,没有时间约定,对材料进行验收,影响施工进度。2、材料验收时合同中规定的验收人员必须
相关文章
推荐文章
发表评论
0评