前端那点事儿——Tocify自动生成文档目录

今天偶然间看到文档服务器有一个动态目录功能,点击目录能跳转到指定的位置;窗口滑动也能自动更新目录的焦点。

效果

框架

原来使用的是一个开源的jquery-ui控件——tocify.js,它可以遍历页面,把指定的DOM元素抽取出来形成目录。
下载地址参考gitub : [gfranko/jquery.tocify.js]

开发者可以直接下载zip包使用,压缩包里面的内容包括:

  • demos 演示页面(里面有一个google的链接,访问会超时,去掉即可)
  • images 可以忽略
  • libs 额外使用的文件,如jquery,jquery-ui,bootstrap等等
  • src 源文件(包括js以及css)——重点
  • test 忽略
  • 其他忽略

举个栗子

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link href="styles/bootstrap.css" rel="stylesheet">
<link href="../src/stylesheets/jquery.tocify.css" rel="stylesheet">
<link href="styles/prettify.css" type="text/css" rel="stylesheet" />
<style>
body {
padding-top: 20px;
}
p {
font-size: 16px;
}
.headerDoc {
color: #005580;
}

@media (max-width: 767px) {
#toc {
position: relative;
width: 100%;
margin: 0px 0px 20px 0px;
}
}
</style>
</head>

<body>
<div class="container-fluid">
<div class="row-fluid">
<div class="span3">
<div id="toc">
</div><!--/.well -->
</div><!--/span-->
<div class="span9">
<div class="hero-unit">
<h1>h1-test-aaa</h1>
<h2>h2-test-aaa</h2>
<p>
test
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</p>
<h1>h1-test-bbb</h1>
<h2>h2-test-bbb</h2>
<p>
test
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</p>
<h1>h1-test-ccc</h1>
<h2>h2-test-ccc1</h2>
<h2>h2-test-ccc2</h2>
<p>
test
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</p>
</div><!--/span-->
</div><!--/row-->
</div>

<script src="../libs/jquery/jquery-1.8.3.min.js"></script>
<script src="../libs/jqueryui/jquery-ui-1.9.1.custom.min.js"></script>
<script src="javascripts/bootstrap.js"></script>
<script src="../src/javascripts/jquery.tocify.js"></script>

<script>
$(function() {
var toc = $("#toc").tocify({
selectors: "h1,h2,h3,h4,h5"
});
});
</script>
</body>
</html>

效果就像前面flash中一样

这个控件支持很多的参数,源码中说的比较详细了,下面是默认的参数

// **context**: Accepts String: Any jQuery selector
// The container element that holds all of the elements used to generate the table of contents
context: "body",

// **ignoreSelector**: Accepts String: Any jQuery selector
// A selector to any element that would be matched by selectors that you wish to be ignored
ignoreSelector: null,

// **selectors**: Accepts an Array of Strings: Any jQuery selectors
// The element's used to generate the table of contents. The order is very important since it will determine the table of content's nesting structure
selectors: "h1, h2, h3",

// **showAndHide**: Accepts a boolean: true or false
// Used to determine if elements should be shown and hidden
showAndHide: true,

// **showEffect**: Accepts String: "none", "fadeIn", "show", or "slideDown"
// Used to display any of the table of contents nested items
showEffect: "slideDown",

// **showEffectSpeed**: Accepts Number (milliseconds) or String: "slow", "medium", or "fast"
// The time duration of the show animation
showEffectSpeed: "medium",

// **hideEffect**: Accepts String: "none", "fadeOut", "hide", or "slideUp"
// Used to hide any of the table of contents nested items
hideEffect: "slideUp",

// **hideEffectSpeed**: Accepts Number (milliseconds) or String: "slow", "medium", or "fast"
// The time duration of the hide animation
hideEffectSpeed: "medium",

// **smoothScroll**: Accepts a boolean: true or false
// Determines if a jQuery animation should be used to scroll to specific table of contents items on the page
smoothScroll: true,

// **smoothScrollSpeed**: Accepts Number (milliseconds) or String: "slow", "medium", or "fast"
// The time duration of the smoothScroll animation
smoothScrollSpeed: "medium",

// **scrollTo**: Accepts Number (pixels)
// The amount of space between the top of page and the selected table of contents item after the page has been scrolled
scrollTo: 0,

// **showAndHideOnScroll**: Accepts a boolean: true or false
// Determines if table of contents nested items should be shown and hidden while scrolling
showAndHideOnScroll: true,

// **highlightOnScroll**: Accepts a boolean: true or false
// Determines if table of contents nested items should be highlighted (set to a different color) while scrolling
highlightOnScroll: true,

// **highlightOffset**: Accepts a number
// The offset distance in pixels to trigger the next active table of contents item
highlightOffset: 40,

// **theme**: Accepts a string: "bootstrap", "jqueryui", or "none"
// Determines if Twitter Bootstrap, jQueryUI, or Tocify classes should be added to the table of contents
theme: "bootstrap",

// **extendPage**: Accepts a boolean: true or false
// If a user scrolls to the bottom of the page and the page is not tall enough to scroll to the last table of contents item, then the page height is increased
extendPage: true,

// **extendPageOffset**: Accepts a number: pixels
// How close to the bottom of the page a user must scroll before the page is extended
extendPageOffset: 100,

// **history**: Accepts a boolean: true or false
// Adds a hash to the page url to maintain history
history: true,

// **scrollHistory**: Accepts a boolean: true or false
// Adds a hash to the page url, to maintain history, when scrolling to a TOC item
scrollHistory: false,

// **hashGenerator**: How the hash value (the anchor segment of the URL, following the
// # character) will be generated.
//
// "compact" (default) - #CompressesEverythingTogether
// "pretty" - #looks-like-a-nice-url-and-is-easily-readable
// function(text, element){} - Your own hash generation function that accepts the text as an
// argument, and returns the hash value.
hashGenerator: "compact",

// **highlightDefault**: Accepts a boolean: true or false
// Set's the first TOC item as active if no other TOC item is active.
highlightDefault: true

 

本文转自博客园xingoo的博客,原文链接:前端那点事儿——Tocify自动生成文档目录,如需转载请自行联系原博主。

时间: 2024-10-28 14:07:41

前端那点事儿——Tocify自动生成文档目录的相关文章

Ruby on rails开发从头来(windows)(十八)-自动生成文档

到此,我们这个购物车的实现就完成了,下面我们可以利用ruby里的Rdoc来给我们的程序生成文档,和dotnet,java,python等一样,Rdoc可以把我们代码里类和方法声明前面的注释提取出来生成文档. 对于我们的depot程序,我们在rails的命令行里运行rake appdoc命令,如图: 开发从头来(windows)(十八)-自动生成文档-ruby on rails"> 完成以后,可以在depot\doc目录下看到刚才生成的文档,打开index.html,看到下面的内容:

phalapi-入门篇4(国际化高可用和自动生成文档)

phalapi-入门篇4(国际化高可用和自动生成文档) 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 在本小节主要讲解如何使用phalapi框架自带的国际化和文档自动生成,以及这样做可以的优点和好处和能解决哪方面的问题 附上: 官网地址:http://www.phalapi.net/ 开源中国Git地址:http://git.oschina.net/dogstar/PhalApi/tree/release 1. 国际化 说道国际化大家应该不陌生

Windows下使用luaDoc给lua生成文档

 首先需要安装lua,Windows下自然是安装Lua For Windows咯,下载地址:http://code.google.com/p/luaforwindows/安装以后它已经包含了luadoc,所以无需我们再去下载,如果非要去下载的话,那么下载地址是:http://luadoc.luaforge.net/. 然后,我们需要准备一个批处理文件,叫啥名字无所谓,我是取名叫做buildDoc.bat的,我用doxygen的时候也是叫这个名字的,以下是批处理文件的内容: @echo onlua

探讨:如何使用PhpDocumentor生成文档_php技巧

命令行方式: 在phpDocumentor所在目录下,输入phpdoc –h会得到一个详细的参数表,其中几个重要的参数如下:-f 要进行分析的文件名,多个文件用逗号隔开-d 要分析的目录,多个目录用逗号分割-t 生成的文档的存放路径-o 输出的文档格式,结构为输出格式:转换器名:模板目录. 例如:phpdoc -o HTML:frames:earthli -f test.php -t docs Web界面生成 在新的phpdoc中,除了在命令行下生成文档外,还可以在客户端浏览器上操作生成文档,具

java web-Java web在线动态生成文档

问题描述 Java web在线动态生成文档 Java web如何动态的向在线编辑的文档中插入数据,已经用word控件在线显示,通过后台操作,把数据插入控件的新建文档,我用的是web office 控件

请问利用 Javadoc 工具生成文档时,如何将类名作为生成的文档的 &amp;amp;lt;title&amp;amp;gt;

问题描述 在 Eclipse 中生成一个项目的 Javadoc. [menu] Project -> Generate javadoc...如果在向导的第三步的 "Extra javadoc options" 文本框中指定 "-windowtitle xxxxxxx", 则生成的每个类的文档的 <title> 都会是固定 xxxxxxx.现在请问如何像那些著名的大型项目生成的 javadoc 那样,每个类的文档的 <title> 都和该

sphinx将python的注释生成文档例子

安装 sudo pip install sphinx 初始化 进入你代码所在的目录,输入以下内容 sphinx-quickstart 会出来一系列要选填的东西,按照我的填入就可以了 Welcome to the Sphinx 1.2.3 quickstart utility. Please enter values for the following settings (just press Enter to accept a default value, if one is given in

Python如何快速从注释生成文档

作为一个标准的程序猿,为程序编写说明文档是一步必不可少的工作,如何才能写的又好又快呢,下面我们就来详细探讨下吧. 今天将告诉大家一个简单平时只要注意的小细节,就可以轻松生成注释文档,也可以检查我们写的类方法引用名称是否重复有问题等. 一看别人专业的大牛们写的文档多牛多羡慕,不用担心我们可以让python为我们生成基本满足的说明文档,一来可以提高代码整体阅读性,二来可以将代码的整体结构看着也更清晰,这样在交接的时候可以省很多麻烦,其它同事在接手你工作的时候也不会一行行去问你这是什么那是什么的,因为

javascript注释生成文档的代码

后来发现这样的文档很不方便查看, 且又听我们BOSS说phper能生成他们的文档, 我在想js会不会也有一个呢, 于是...你懂的... 通过@广州♂lxrmido 知道了 jsdoc, 于是 github上down下来; 附地址: https://github.com/jsdoc3/jsdoc 他可以让你的js生成HTML文档,如:  代码如下 复制代码 /**  * 打开新窗口  * @param {string} [url] 连接  * @param {object} [options]