参考博客
Css
/*生成博客目录的CSS*/
#uprightsideBar{
font-size:12px;
font-family:Arial, Helvetica, sans-serif;
text-align:left;
position:fixed;/*将div的位置固定到距离top:50px,right:0px的位置,这样div就会处在最右边的位置,距离顶部50px*/
top:50px;
right:0px;
width: auto;
height: auto;
}
#sideBarTab{
float:left;
width:30px;
border:1px solid #e5e5e5;
border-right:none;
text-align:center;
background:#ffffff;
}
#sideBarContents{
float:left;
overflow:auto;
overflow-x:hidden;!important;
width:200px;
min-height:108px;
max-height:460px;
border:1px solid #e5e5e5;
border-right:none;
background:#ffffff;
}
#sideBarContents dl{
margin:0;
padding:0;
}
#sideBarContents dt{
margin-top:5px;
margin-left:5px;
}
#sideBarContents dd, dt {
cursor: pointer;
}
#sideBarContents dd:hover, dt:hover {
color:#A7995A;
}
#sideBarContents dd{
margin-left:20px;
}
页首-作用生成右侧目录链接
<script type="text/javascript">
/*
功能:生成博客目录的JS工具
测试:IE8,火狐,google测试通过
孤傲苍狼
2014-5-11
*/
var BlogDirectory = {
/*
获取元素位置,距浏览器左边界的距离(left)和距浏览器上边界的距离(top)
*/
getElementPosition:function (ele) {
var topPosition = 0;
var leftPosition = 0;
while (ele){
topPosition += ele.offsetTop;
leftPosition += ele.offsetLeft;
ele = ele.offsetParent;
}
return {top:topPosition, left:leftPosition};
},
/*
获取滚动条当前位置
*/
getScrollBarPosition:function () {
var scrollBarPosition = document.body.scrollTop || document.documentElement.scrollTop;
return scrollBarPosition;
},
/*
移动滚动条,finalPos 为目的位置,internal 为移动速度
*/
moveScrollBar:function(finalpos, interval) {
//若不支持此方法,则退出
if(!window.scrollTo) {
return false;
}
//窗体滚动时,禁用鼠标滚轮
window.onmousewheel = function(){
return false;
};
//清除计时
if (document.body.movement) {
clearTimeout(document.body.movement);
}
var currentpos =BlogDirectory.getScrollBarPosition();//获取滚动条当前位置
var dist = 0;
if (currentpos == finalpos) {//到达预定位置,则解禁鼠标滚轮,并退出
window.onmousewheel = function(){
return true;
}
return true;
}
if (currentpos < finalpos) {//未到达,则计算下一步所要移动的距离
dist = Math.ceil((finalpos - currentpos)/10);
currentpos += dist;
}
if (currentpos > finalpos) {
dist = Math.ceil((currentpos - finalpos)/10);
currentpos -= dist;
}
var scrTop = BlogDirectory.getScrollBarPosition();//获取滚动条当前位置
window.scrollTo(0, currentpos);//移动窗口
if(BlogDirectory.getScrollBarPosition() == scrTop)//若已到底部,则解禁鼠标滚轮,并退出
{
window.onmousewheel = function(){
return true;
}
return true;
}
//进行下一步移动
var repeat = "BlogDirectory.moveScrollBar(" + finalpos + "," + interval + ")";
document.body.movement = setTimeout(repeat, interval);
},
htmlDecode:function (text){
var temp = document.createElement("div");
temp.innerHTML = text;
var output = temp.innerText || temp.textContent;
temp = null;
return output;
},
/*
创建博客目录,
id表示包含博文正文的 div 容器的 id,
mt 和 st 分别表示主标题和次级标题的标签名称(如 H2、H3,大写或小写都可以!),
interval 表示移动的速度
*/
createBlogDirectory:function (id, mt, st, interval){
//获取博文正文div容器
var elem = document.getElementById(id);
if(!elem) return false;
//获取div中所有元素结点
var nodes = elem.getElementsByTagName("*");
//创建博客目录的div容器
var divSideBar = document.createElement(\'DIV\');
divSideBar.className = \'uprightsideBar\';
divSideBar.setAttribute(\'id\', \'uprightsideBar\');
var divSideBarTab = document.createElement(\'DIV\');
divSideBarTab.setAttribute(\'id\', \'sideBarTab\');
divSideBar.appendChild(divSideBarTab);
var h2 = document.createElement(\'H2\');
divSideBarTab.appendChild(h2);
var txt = document.createTextNode(\'目录导航\');
h2.appendChild(txt);
var divSideBarContents = document.createElement(\'DIV\');
divSideBarContents.style.display = \'none\';
divSideBarContents.setAttribute(\'id\', \'sideBarContents\');
divSideBar.appendChild(divSideBarContents);
//创建自定义列表
var dlist = document.createElement("dl");
divSideBarContents.appendChild(dlist);
var num = 0;//统计找到的mt和st
mt = mt.toUpperCase();//转化成大写
st = st.toUpperCase();//转化成大写
//遍历所有元素结点
for(var i=0; i<nodes.length; i++)
{
if(nodes[i].nodeName == mt|| nodes[i].nodeName == st)
{
//获取标题文本
var nodetext = nodes[i].innerHTML.replace(/<\/?[^>]+>/g,"");//innerHTML里面的内容可能有HTML标签,所以用正则表达式去除HTML的标签
nodetext = nodetext.replace(/ /ig, "");//替换掉所有的
nodetext = BlogDirectory.htmlDecode(nodetext);
//插入锚
nodes[i].setAttribute("id", "blogTitle" + num);
var item;
switch(nodes[i].nodeName)
{
case mt: //若为主标题
item = document.createElement("dt");
break;
case st: //若为子标题
item = document.createElement("dd");
break;
}
//创建锚链接
var itemtext = document.createTextNode(nodetext);
item.appendChild(itemtext);
item.setAttribute("name", num);
item.onclick = function(){ //添加鼠标点击触发函数
var pos = BlogDirectory.getElementPosition(document.getElementById("blogTitle" + this.getAttribute("name")));
if(!BlogDirectory.moveScrollBar(pos.top, interval)) return false;
};
//将自定义表项加入自定义列表中
dlist.appendChild(item);
num++;
}
}
if(num == 0) return false;
/*鼠标进入时的事件处理*/
divSideBarTab.onmouseenter = function(){
divSideBarContents.style.display = \'block\';
}
/*鼠标离开时的事件处理*/
divSideBar.onmouseleave = function() {
divSideBarContents.style.display = \'none\';
}
document.body.appendChild(divSideBar);
}
};
window.onload=function(){
/*页面加载完成之后生成博客目录*/
BlogDirectory.createBlogDirectory("likecs_post_body","h2","h3",20);
}
</script>
页脚html代码
<script language="javascript" type="text/javascript">
// 生成目录索引列表
// ref: http://www.cnblogs.com/wangqiguo/p/4355032.html
// modified by: zzq
function GenerateContentList()
{
var mainContent = $(\'#likecs_post_body\');
var h2_list = $(\'#likecs_post_body h2\');//如果你的章节标题不是h2,只需要将这里的h2换掉即可
if(mainContent.length < 1)
return;
if(h2_list.length>0)
{
var content = \'<a name="_labelTop"></a>\';
content += \'<div id="navCategory" style="color:#152e97;">\';
content += \'<p style="font-size:18px;"><b>目录</b></p>\';
content += \'<ul>\';
for(var i=0; i<h2_list.length; i++)
{
var go_to_top = \'<div style="text-align: right;"><a href="#_labelTop" style="color:#f68a33">回到顶部</a><a name="_label\' + i + \'"></a></div>\';
$(h2_list[i]).before(go_to_top);
var h3_list = $(h2_list[i]).nextAll("h3");
var li3_content = \'\';
for(var j=0; j<h3_list.length; j++)
{
var tmp = $(h3_list[j]).prevAll(\'h2\').first();
if(!tmp.is(h2_list[i]))
break;
var li3_anchor = \'<a name="_label\' + i + \'_\' + j + \'"></a>\';
$(h3_list[j]).before(li3_anchor);
li3_content += \'<li><a href="#_label\' + i + \'_\' + j + \'">\' + $(h3_list[j]).text() + \'</a></li>\';
}
var li2_content = \'\';
if(li3_content.length > 0)
li2_content = \'<li><a href="#_label\' + i + \'">\' + $(h2_list[i]).text() + \'</a><ul>\' + li3_content + \'</ul></li>\';
else
li2_content = \'<li><a href="#_label\' + i + \'">\' + $(h2_list[i]).text() + \'</a></li>\';
content += li2_content;
}
content += \'</ul>\';
content += \'</div><p> </p>\';
content += \'<hr style="height:1px;border:none;border-top:1px dashed #0066CC;"/>\';
if($(\'#likecs_post_body\').length != 0 )
{
$($(\'#likecs_post_body\')[0]).prepend(content);
}
}
}
GenerateContentList();
</script>
博客园-秒音天女
[为博客园添加目录的方法总结 - 妙音天女 - 博客园](https://www.cnblogs.com/xuehaoyue/p/6650533.html
<html lang="zh-cn"><head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="referrer" content="never">
<meta property="og:description" content="参考链接: 第一种:在正文上方直接添加目录 1. 申请开通js权限 默认是不支持,需要打开博客园后台,进入"设置"标签页,点击"申请开通js权限",并注明用途 如果想加快申请速度,也可以再向官方发个邮">
<meta http-equiv="Cache-Control" content="no-transform">
<meta http-equiv="Cache-Control" content="no-siteapp">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>为博客园添加目录的方法总结 - 妙音天女 - 博客园</title>
<link id="favicon" rel="shortcut icon" href="//common.cnblogs.com/favicon.ico?v=20200522" type="image/x-icon">
<link rel="stylesheet" href="/css/blog-common.min.css?v=7Pwqzj5EBy4dBv4DJNI181rFKP8_OF0hT7jO3o8jAa0">
<link id="MainCss" rel="stylesheet" href="/skins/red_autumnal_leaves/bundle-red_autumnal_leaves.min.css?v=eYry4v2FokppvT7fmPg3DGeBoc4qFOj6-DhKpxeIDUE">
<link type="text/css" rel="stylesheet" href="https://www.cnblogs.com/xuehaoyue/custom.css?v=fwyjZnXOr8U9MHuEBYXiLjG6tzQ=">
<link id="mobile-style" media="only screen and (max-width: 767px)" type="text/css" rel="stylesheet" href="/skins/red_autumnal_leaves/bundle-red_autumnal_leaves-mobile.min.css?v=-9jRKRAEeEtlr5EkSG-LpMBRHz2PN0kolWZ1uU8dFT4">
<link type="application/rss+xml" rel="alternate" href="https://www.cnblogs.com/xuehaoyue/rss">
<link type="application/rsd+xml" rel="EditURI" href="https://www.cnblogs.com/xuehaoyue/rsd.xml">
<link type="application/wlwmanifest+xml" rel="wlwmanifest" href="https://www.cnblogs.com/xuehaoyue/wlwmanifest.xml">
<script async="" src="https://www.google-analytics.com/analytics.js"></script><script>
var currentBlogId = 329862;
var currentBlogApp = \'xuehaoyue\';
var cb_enable_mathjax = false;
var isLogined = true;
var isBlogOwner = false;
var skinName = \'red_autumnal_leaves\';
var visitorUserId = \'a693a5ff-d75d-452a-4edb-08d5af5cce02\';
</script>
<script>
var currentPostDateAdded = \'2017-03-31 11:40\';
</script>
<script src="https://common.cnblogs.com/scripts/jquery-2.2.0.min.js"></script>
<script src="/js/blog-common.min.js?v=Uo4ymXJm9Uae70e1QiD0VXEYnmJBktRs6o-wOPBmwyQ"></script>
</head>
<body>
<a name="top"></a>
<div id="page_begin_html"><script type="text/javascript">window[\'__document_write_ajax_callbacks__\'][\'2\']();</script><script type="text/javascript">window[\'__document_write_ajax_callbacks__\'][\'1\']();</script></div>
<!--done-->
<div id="home">
<div id="header">
<div id="blogTitle">
<a id="lnkBlogLogo" href="https://www.cnblogs.com/xuehaoyue/"><img id="blogLogo" src="/skins/custom/images/logo.gif" alt="返回主页"></a>
<!--done-->
<h1><a id="Header1_HeaderTitle" class="headermaintitle HeaderMainTitle" href="https://www.cnblogs.com/xuehaoyue/">妙音天女</a>
</h1>
<h2>
</h2>
</div><!--end: blogTitle 博客的标题和副标题 -->
<div id="navigator">
<ul id="navList">
<li><a id="blog_nav_sitehome" class="menu" href="https://www.cnblogs.com/">
博客园</a>
</li>
<li>
<a id="blog_nav_myhome" class="menu" href="https://www.cnblogs.com/xuehaoyue/">
首页</a>
</li>
<li>
<a id="blog_nav_newpost" class="menu" href="https://i.cnblogs.com/EditPosts.aspx?opt=1">
新随笔</a>
</li>
<li>
<a id="blog_nav_contact" class="menu" href="https://msg.cnblogs.com/send/%E5%A6%99%E9%9F%B3%E5%A4%A9%E5%A5%B3">
联系</a></li>
<li>
<a id="blog_nav_rss" class="menu" href="javascript:void(0)" data-rss="https://www.cnblogs.com/xuehaoyue/rss/">订阅</a>
<!--<partial name="./Shared/_XmlLink.cshtml" model="Model" /></li>--></li>
<li>
<a id="blog_nav_admin" class="menu" href="https://i.cnblogs.com/">
管理</a>
</li>
</ul>
<div class="blogStats">
<span id="stats_post_count">随笔 -
40 </span>
<span id="stats_article_count">文章 -
1 </span>
<span id="stats-comment_count">评论 -
59</span>
</div><!--end: blogStats -->
</div><!--end: navigator 博客导航栏 -->
</div><!--end: header 头部 -->
<div id="main">
<div id="mainContent">
<div class="forFlow">
<div id="post_detail">
<!--done-->
<div id="topics">
<div class="post">
<h1 class="postTitle">
<a id="cb_post_title_url" class="postTitle2 vertical-middle" href="https://www.cnblogs.com/xuehaoyue/p/6650533.html">
<span>为博客园添加目录的方法总结</span>
</a>
</h1>
<div class="clear"></div>
<div class="postBody">
<div id="likecs_post_body" class="blogpost-body cnblogs-markdown"><a name="_labelTop"></a><div id="navCategory" style="color:#152e97;"><p style="font-size:18px;"><b>目录</b></p><ul><li><a href="#_label0">第一种:在正文上方直接添加目录</a><ul><li><a href="#_label0_0">1. 申请开通js权限</a></li><li><a href="#_label0_1">2. 添加js脚本到"页脚Html代码"</a></li><li><a href="#_label0_2">3. 按格式写文章</a></li></ul></li><li><a href="#_label1">第二种:在文章右上角添加目录导航</a><ul><li><a href="#_label1_0">1. 申请开通js权限</a></li><li><a href="#_label1_1">2. 添加css代码到"页面定制CSS代码"</a></li><li><a href="#_label1_2">3. 添加js脚本到"页首Html代码"</a></li><li><a href="#_label1_3">4. 按格式写文章</a></li></ul></li></ul></div><p> </p><hr style="height:1px;border:none;border-top:1px dashed #0066CC;">
<p>参考链接:<br>
<a href="http://www.cnblogs.com/xdp-gacl/p/3718879.html#2937655">http://www.cnblogs.com/xdp-gacl/p/3718879.html#2937655</a><br>
<a href="http://www.cnblogs.com/zzqcn/p/4657124.html">http://www.cnblogs.com/zzqcn/p/4657124.html</a><br>
<a href="http://www.cnblogs.com/jiangz/p/3734968.html">http://www.cnblogs.com/jiangz/p/3734968.html</a></p>
<div style="text-align: right;"><a href="#_labelTop" style="color:#f68a33">回到顶部</a><a name="_label0"></a></div><h2 id="blogTitle0">第一种:在正文上方直接添加目录</h2>
<a name="_label0_0"></a><h3 id="blogTitle1">1. 申请开通js权限</h3>
<p>默认是不支持,需要打开博客园后台,进入"设置"标签页,点击"申请开通js权限",并注明用途<br>
<img src="//upload-images.jianshu.io/upload_images/4334050-29d472bc4b493c49.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Paste_Image.png" loading="lazy"><br>
如果想加快申请速度,也可以再向官方发个邮件(邮箱是<a href="mailto:contact@cnblogs.com">contact@cnblogs.com</a>),邮件也需要注明用途,快的话1小时就能搞定了</p>
<a name="_label0_1"></a><h3 id="blogTitle2">2. 添加js脚本到"页脚Html代码"</h3>
<p>打开博客园后台,进入"设置"标签页,在最下面的"页脚Html代码"对应的编辑框粘贴下面的js代码,然后点"保存"按钮保存。<br>
(如果没有开通js权限,此处无法添加)<br>
<img src="//upload-images.jianshu.io/upload_images/4334050-6cf216b26ad8be06.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Paste_Image.png" loading="lazy"></p>
<p><img src="//upload-images.jianshu.io/upload_images/4334050-4d54307e03714fa2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Paste_Image.png" loading="lazy"></p>
<pre><code class="hljs xml"><span class="hljs-tag"><<span class="hljs-name">script</span> <span class="hljs-attr">language</span>=<span class="hljs-string">"javascript"</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span>></span><span class="javascript">
<span class="hljs-comment">// 生成目录索引列表</span>
<span class="hljs-comment">// ref: http://www.cnblogs.com/wangqiguo/p/4355032.html</span>
<span class="hljs-comment">// modified by: zzq</span>
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">GenerateContentList</span>(<span class="hljs-params"></span>)
</span>{
<span class="hljs-keyword">var</span> mainContent = $(<span class="hljs-string">\'#likecs_post_body\'</span>);
<span class="hljs-keyword">var</span> h2_list = $(<span class="hljs-string">\'#likecs_post_body h2\'</span>);<span class="hljs-comment">//如果你的章节标题不是h2,只需要将这里的h2换掉即可</span>
<span class="hljs-keyword">if</span>(mainContent.length < <span class="hljs-number">1</span>)
<span class="hljs-keyword">return</span>;
<span class="hljs-keyword">if</span>(h2_list.length><span class="hljs-number">0</span>)
{
<span class="hljs-keyword">var</span> content = <span class="hljs-string">\'<a name="_labelTop"></a>\'</span>;
content += <span class="hljs-string">\'<div id="navCategory" style="color:#152e97;">\'</span>;
content += <span class="hljs-string">\'<p style="font-size:18px;"><b>目录</b></p>\'</span>;
content += <span class="hljs-string">\'<ul>\'</span>;
<span class="hljs-keyword">for</span>(<span class="hljs-keyword">var</span> i=<span class="hljs-number">0</span>; i<h2_list.length; i++)
{
<span class="hljs-keyword">var</span> go_to_top = <span class="hljs-string">\'<div style="text-align: right;"><a href="#_labelTop" style="color:#f68a33">回到顶部</a><a name="_label\'</span> + i + <span class="hljs-string">\'"></a></div>\'</span>;
$(h2_list[i]).before(go_to_top);
<span class="hljs-keyword">var</span> h3_list = $(h2_list[i]).nextAll(<span class="hljs-string">"h3"</span>);
<span class="hljs-keyword">var</span> li3_content = <span class="hljs-string">\'\'</span>;
<span class="hljs-keyword">for</span>(<span class="hljs-keyword">var</span> j=<span class="hljs-number">0</span>; j<h3_list.length; j++)
{
<span class="hljs-keyword">var</span> tmp = $(h3_list[j]).prevAll(<span class="hljs-string">\'h2\'</span>).first();
<span class="hljs-keyword">if</span>(!tmp.is(h2_list[i]))
<span class="hljs-keyword">break</span>;
<span class="hljs-keyword">var</span> li3_anchor = <span class="hljs-string">\'<a name="_label\'</span> + i + <span class="hljs-string">\'_\'</span> + j + <span class="hljs-string">\'"></a>\'</span>;
$(h3_list[j]).before(li3_anchor);
li3_content += <span class="hljs-string">\'<li><a href="#_label\'</span> + i + <span class="hljs-string">\'_\'</span> + j + <span class="hljs-string">\'">\'</span> + $(h3_list[j]).text() + <span class="hljs-string">\'</a></li>\'</span>;
}
<span class="hljs-keyword">var</span> li2_content = <span class="hljs-string">\'\'</span>;
<span class="hljs-keyword">if</span>(li3_content.length > <span class="hljs-number">0</span>)
li2_content = <span class="hljs-string">\'<li><a href="#_label\'</span> + i + <span class="hljs-string">\'">\'</span> + $(h2_list[i]).text() + <span class="hljs-string">\'</a><ul>\'</span> + li3_content + <span class="hljs-string">\'</ul></li>\'</span>;
<span class="hljs-keyword">else</span>
li2_content = <span class="hljs-string">\'<li><a href="#_label\'</span> + i + <span class="hljs-string">\'">\'</span> + $(h2_list[i]).text() + <span class="hljs-string">\'</a></li>\'</span>;
content += li2_content;
}
content += <span class="hljs-string">\'</ul>\'</span>;
content += <span class="hljs-string">\'</div><p>&nbsp;</p>\'</span>;
content += <span class="hljs-string">\'<hr style="height:1px;border:none;border-top:1px dashed #0066CC;"/>\'</span>;
<span class="hljs-keyword">if</span>($(<span class="hljs-string">\'#likecs_post_body\'</span>).length != <span class="hljs-number">0</span> )
{
$($(<span class="hljs-string">\'#likecs_post_body\'</span>)[<span class="hljs-number">0</span>]).prepend(content);
}
}
}
GenerateContentList();
</span><span class="hljs-tag"></<span class="hljs-name">script</span>></span>
</code></pre>
<a name="_label0_2"></a><h3 id="blogTitle3">3. 按格式写文章</h3>
<p>在写新博文的时候,注意按照你js脚本里设定的格式来划分章节(这里只设定了h2,h3,对应普通编辑器中的二级标题和三级标题,对应markdown中的##和###)。当然,以前发布的文章如果有h2,h3,也会自动生成目录索引。<br>
<br><br>
效果如下:<br>
<img src="//upload-images.jianshu.io/upload_images/4334050-85f26e605ba11f1b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Paste_Image.png" loading="lazy"></p>
<div style="text-align: right;"><a href="#_labelTop" style="color:#f68a33">回到顶部</a><a name="_label1"></a></div><h2 id="blogTitle4">第二种:在文章右上角添加目录导航</h2>
<a name="_label1_0"></a><h3 id="blogTitle5">1. 申请开通js权限</h3>
<p>同上</p>
<a name="_label1_1"></a><h3 id="blogTitle6">2. 添加css代码到"页面定制CSS代码"</h3>
<p><img src="//upload-images.jianshu.io/upload_images/4334050-66323d1d5ca908a2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Paste_Image.png" loading="lazy"></p>
<pre><code class="hljs scss"><span class="hljs-comment">/*生成博客目录的CSS*/</span>
<span class="hljs-selector-id">#uprightsideBar</span>{
<span class="hljs-attribute">font-size</span>:<span class="hljs-number">12px</span>;
<span class="hljs-attribute">font-family</span>:Arial, Helvetica, sans-serif;
<span class="hljs-attribute">text-align</span>:left;
<span class="hljs-attribute">position</span>:fixed;<span class="hljs-comment">/*将div的位置固定到距离top:50px,right:0px的位置,这样div就会处在最右边的位置,距离顶部50px*/</span>
<span class="hljs-attribute">top</span>:<span class="hljs-number">50px</span>;
<span class="hljs-attribute">right</span>:<span class="hljs-number">0px</span>;
<span class="hljs-attribute">width</span>: auto;
<span class="hljs-attribute">height</span>: auto;
}
<span class="hljs-selector-id">#sideBarTab</span>{
<span class="hljs-attribute">float</span>:left;
<span class="hljs-attribute">width</span>:<span class="hljs-number">30px</span>;
<span class="hljs-attribute">border</span>:<span class="hljs-number">1px</span> solid <span class="hljs-number">#e5e5e5</span>;
<span class="hljs-attribute">border-right</span>:none;
<span class="hljs-attribute">text-align</span>:center;
<span class="hljs-attribute">background</span>:<span class="hljs-number">#ffffff</span>;
}
<span class="hljs-selector-id">#sideBarContents</span>{
<span class="hljs-attribute">float</span>:left;
<span class="hljs-attribute">overflow</span>:auto;
<span class="hljs-attribute">overflow-x</span>:hidden;!important;
<span class="hljs-attribute">width</span>:<span class="hljs-number">200px</span>;
<span class="hljs-attribute">min-height</span>:<span class="hljs-number">108px</span>;
<span class="hljs-attribute">max-height</span>:<span class="hljs-number">460px</span>;
<span class="hljs-attribute">border</span>:<span class="hljs-number">1px</span> solid <span class="hljs-number">#e5e5e5</span>;
<span class="hljs-attribute">border-right</span>:none;
<span class="hljs-attribute">background</span>:<span class="hljs-number">#ffffff</span>;
}
<span class="hljs-selector-id">#sideBarContents</span> <span class="hljs-selector-tag">dl</span>{
<span class="hljs-attribute">margin</span>:<span class="hljs-number">0</span>;
<span class="hljs-attribute">padding</span>:<span class="hljs-number">0</span>;
}
<span class="hljs-selector-id">#sideBarContents</span> <span class="hljs-selector-tag">dt</span>{
<span class="hljs-attribute">margin-top</span>:<span class="hljs-number">5px</span>;
<span class="hljs-attribute">margin-left</span>:<span class="hljs-number">5px</span>;
}
<span class="hljs-selector-id">#sideBarContents</span> <span class="hljs-selector-tag">dd</span>, <span class="hljs-selector-tag">dt</span> {
<span class="hljs-attribute">cursor</span>: pointer;
}
<span class="hljs-selector-id">#sideBarContents</span> <span class="hljs-selector-tag">dd</span>:hover, <span class="hljs-selector-tag">dt</span>:hover {
<span class="hljs-attribute">color</span>:<span class="hljs-number">#A7995A</span>;
}
<span class="hljs-selector-id">#sideBarContents</span> <span class="hljs-selector-tag">dd</span>{
<span class="hljs-attribute">margin-left</span>:<span class="hljs-number">20px</span>;
}
</code></pre>
<a name="_label1_2"></a><h3 id="blogTitle7">3. 添加js脚本到"页首Html代码"</h3>
<p><img src="//upload-images.jianshu.io/upload_images/4334050-118df2570a63de6c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Paste_Image.png" loading="lazy"></p>
<pre><code class="hljs xml"><span class="hljs-tag"><<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text/javascript"</span>></span><span class="javascript">
<span class="hljs-comment">/*
功能:生成博客目录的JS工具
测试:IE8,火狐,google测试通过
孤傲苍狼
2014-5-11
*/</span>
<span class="hljs-keyword">var</span> BlogDirectory = {
<span class="hljs-comment">/*
获取元素位置,距浏览器左边界的距离(left)和距浏览器上边界的距离(top)
*/</span>
getElementPosition:<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">ele</span>) </span>{
<span class="hljs-keyword">var</span> topPosition = <span class="hljs-number">0</span>;
<span class="hljs-keyword">var</span> leftPosition = <span class="hljs-number">0</span>;
<span class="hljs-keyword">while</span> (ele){
topPosition += ele.offsetTop;
leftPosition += ele.offsetLeft;
ele = ele.offsetParent;
}
<span class="hljs-keyword">return</span> {<span class="hljs-attr">top</span>:topPosition, <span class="hljs-attr">left</span>:leftPosition};
},
<span class="hljs-comment">/*
获取滚动条当前位置
*/</span>
getScrollBarPosition:<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) </span>{
<span class="hljs-keyword">var</span> scrollBarPosition = <span class="hljs-built_in">document</span>.body.scrollTop || <span class="hljs-built_in">document</span>.documentElement.scrollTop;
<span class="hljs-keyword">return</span> scrollBarPosition;
},
<span class="hljs-comment">/*
移动滚动条,finalPos 为目的位置,internal 为移动速度
*/</span>
moveScrollBar:<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">finalpos, interval</span>) </span>{
<span class="hljs-comment">//若不支持此方法,则退出</span>
<span class="hljs-keyword">if</span>(!<span class="hljs-built_in">window</span>.scrollTo) {
<span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
}
<span class="hljs-comment">//窗体滚动时,禁用鼠标滚轮</span>
<span class="hljs-built_in">window</span>.onmousewheel = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
<span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
};
<span class="hljs-comment">//清除计时</span>
<span class="hljs-keyword">if</span> (<span class="hljs-built_in">document</span>.body.movement) {
clearTimeout(<span class="hljs-built_in">document</span>.body.movement);
}
<span class="hljs-keyword">var</span> currentpos =BlogDirectory.getScrollBarPosition();<span class="hljs-comment">//获取滚动条当前位置</span>
<span class="hljs-keyword">var</span> dist = <span class="hljs-number">0</span>;
<span class="hljs-keyword">if</span> (currentpos == finalpos) {<span class="hljs-comment">//到达预定位置,则解禁鼠标滚轮,并退出</span>
<span class="hljs-built_in">window</span>.onmousewheel = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
<span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
}
<span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
}
<span class="hljs-keyword">if</span> (currentpos < finalpos) {<span class="hljs-comment">//未到达,则计算下一步所要移动的距离</span>
dist = <span class="hljs-built_in">Math</span>.ceil((finalpos - currentpos)/<span class="hljs-number">10</span>);
currentpos += dist;
}
<span class="hljs-keyword">if</span> (currentpos > finalpos) {
dist = <span class="hljs-built_in">Math</span>.ceil((currentpos - finalpos)/<span class="hljs-number">10</span>);
currentpos -= dist;
}
<span class="hljs-keyword">var</span> scrTop = BlogDirectory.getScrollBarPosition();<span class="hljs-comment">//获取滚动条当前位置</span>
<span class="hljs-built_in">window</span>.scrollTo(<span class="hljs-number">0</span>, currentpos);<span class="hljs-comment">//移动窗口</span>
<span class="hljs-keyword">if</span>(BlogDirectory.getScrollBarPosition() == scrTop)<span class="hljs-comment">//若已到底部,则解禁鼠标滚轮,并退出</span>
{
<span class="hljs-built_in">window</span>.onmousewheel = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
<span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
}
<span class="hljs-keyword">return</span> <span class="hljs-literal">true</span>;
}
<span class="hljs-comment">//进行下一步移动</span>
<span class="hljs-keyword">var</span> repeat = <span class="hljs-string">"BlogDirectory.moveScrollBar("</span> + finalpos + <span class="hljs-string">","</span> + interval + <span class="hljs-string">")"</span>;
<span class="hljs-built_in">document</span>.body.movement = setTimeout(repeat, interval);
},
<span class="hljs-attr">htmlDecode</span>:<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">text</span>)</span>{
<span class="hljs-keyword">var</span> temp = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">"div"</span>);
temp.innerHTML = text;
<span class="hljs-keyword">var</span> output = temp.innerText || temp.textContent;
temp = <span class="hljs-literal">null</span>;
<span class="hljs-keyword">return</span> output;
},
<span class="hljs-comment">/*
创建博客目录,
id表示包含博文正文的 div 容器的 id,
mt 和 st 分别表示主标题和次级标题的标签名称(如 H2、H3,大写或小写都可以!),
interval 表示移动的速度
*/</span>
createBlogDirectory:<span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">id, mt, st, interval</span>)</span>{
<span class="hljs-comment">//获取博文正文div容器</span>
<span class="hljs-keyword">var</span> elem = <span class="hljs-built_in">document</span>.getElementById(id);
<span class="hljs-keyword">if</span>(!elem) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
<span class="hljs-comment">//获取div中所有元素结点</span>
<span class="hljs-keyword">var</span> nodes = elem.getElementsByTagName(<span class="hljs-string">"*"</span>);
<span class="hljs-comment">//创建博客目录的div容器</span>
<span class="hljs-keyword">var</span> divSideBar = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">\'DIV\'</span>);
divSideBar.className = <span class="hljs-string">\'uprightsideBar\'</span>;
divSideBar.setAttribute(<span class="hljs-string">\'id\'</span>, <span class="hljs-string">\'uprightsideBar\'</span>);
<span class="hljs-keyword">var</span> divSideBarTab = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">\'DIV\'</span>);
divSideBarTab.setAttribute(<span class="hljs-string">\'id\'</span>, <span class="hljs-string">\'sideBarTab\'</span>);
divSideBar.appendChild(divSideBarTab);
<span class="hljs-keyword">var</span> h2 = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">\'H2\'</span>);
divSideBarTab.appendChild(h2);
<span class="hljs-keyword">var</span> txt = <span class="hljs-built_in">document</span>.createTextNode(<span class="hljs-string">\'目录导航\'</span>);
h2.appendChild(txt);
<span class="hljs-keyword">var</span> divSideBarContents = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">\'DIV\'</span>);
divSideBarContents.style.display = <span class="hljs-string">\'none\'</span>;
divSideBarContents.setAttribute(<span class="hljs-string">\'id\'</span>, <span class="hljs-string">\'sideBarContents\'</span>);
divSideBar.appendChild(divSideBarContents);
<span class="hljs-comment">//创建自定义列表</span>
<span class="hljs-keyword">var</span> dlist = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">"dl"</span>);
divSideBarContents.appendChild(dlist);
<span class="hljs-keyword">var</span> num = <span class="hljs-number">0</span>;<span class="hljs-comment">//统计找到的mt和st</span>
mt = mt.toUpperCase();<span class="hljs-comment">//转化成大写</span>
st = st.toUpperCase();<span class="hljs-comment">//转化成大写</span>
<span class="hljs-comment">//遍历所有元素结点</span>
<span class="hljs-keyword">for</span>(<span class="hljs-keyword">var</span> i=<span class="hljs-number">0</span>; i<nodes.length; i++)
{
<span class="hljs-keyword">if</span>(nodes[i].nodeName == mt|| nodes[i].nodeName == st)
{
<span class="hljs-comment">//获取标题文本</span>
<span class="hljs-keyword">var</span> nodetext = nodes[i].innerHTML.replace(<span class="hljs-regexp">/<\/?[^>]+>/g</span>,<span class="hljs-string">""</span>);<span class="hljs-comment">//innerHTML里面的内容可能有HTML标签,所以用正则表达式去除HTML的标签</span>
nodetext = nodetext.replace(<span class="hljs-regexp">/ /ig</span>, <span class="hljs-string">""</span>);<span class="hljs-comment">//替换掉所有的 </span>
nodetext = BlogDirectory.htmlDecode(nodetext);
<span class="hljs-comment">//插入锚 </span>
nodes[i].setAttribute(<span class="hljs-string">"id"</span>, <span class="hljs-string">"blogTitle"</span> + num);
<span class="hljs-keyword">var</span> item;
<span class="hljs-keyword">switch</span>(nodes[i].nodeName)
{
<span class="hljs-keyword">case</span> mt: <span class="hljs-comment">//若为主标题 </span>
item = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">"dt"</span>);
<span class="hljs-keyword">break</span>;
<span class="hljs-keyword">case</span> st: <span class="hljs-comment">//若为子标题</span>
item = <span class="hljs-built_in">document</span>.createElement(<span class="hljs-string">"dd"</span>);
<span class="hljs-keyword">break</span>;
}
<span class="hljs-comment">//创建锚链接</span>
<span class="hljs-keyword">var</span> itemtext = <span class="hljs-built_in">document</span>.createTextNode(nodetext);
item.appendChild(itemtext);
item.setAttribute(<span class="hljs-string">"name"</span>, num);
item.onclick = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{ <span class="hljs-comment">//添加鼠标点击触发函数</span>
<span class="hljs-keyword">var</span> pos = BlogDirectory.getElementPosition(<span class="hljs-built_in">document</span>.getElementById(<span class="hljs-string">"blogTitle"</span> + <span class="hljs-keyword">this</span>.getAttribute(<span class="hljs-string">"name"</span>)));
<span class="hljs-keyword">if</span>(!BlogDirectory.moveScrollBar(pos.top, interval)) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
};
<span class="hljs-comment">//将自定义表项加入自定义列表中</span>
dlist.appendChild(item);
num++;
}
}
<span class="hljs-keyword">if</span>(num == <span class="hljs-number">0</span>) <span class="hljs-keyword">return</span> <span class="hljs-literal">false</span>;
<span class="hljs-comment">/*鼠标进入时的事件处理*/</span>
divSideBarTab.onmouseenter = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
divSideBarContents.style.display = <span class="hljs-string">\'block\'</span>;
}
<span class="hljs-comment">/*鼠标离开时的事件处理*/</span>
divSideBar.onmouseleave = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>) </span>{
divSideBarContents.style.display = <span class="hljs-string">\'none\'</span>;
}
<span class="hljs-built_in">document</span>.body.appendChild(divSideBar);
}
};
<span class="hljs-built_in">window</span>.onload=<span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
<span class="hljs-comment">/*页面加载完成之后生成博客目录*/</span>
BlogDirectory.createBlogDirectory(<span class="hljs-string">"likecs_post_body"</span>,<span class="hljs-string">"h2"</span>,<span class="hljs-string">"h3"</span>,<span class="hljs-number">20</span>);
}
</span><span class="hljs-tag"></<span class="hljs-name">script</span>></span>
</code></pre>
<a name="_label1_3"></a><h3 id="blogTitle8">4. 按格式写文章</h3>
<p>同上<br>
<br><br>
效果如下:<br>
<img src="//upload-images.jianshu.io/upload_images/4334050-9dac637b2930256f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="Paste_Image.png" loading="lazy"></p>
</div>
<div id="MySignature"></div>
<div class="clear"></div>
<div id="blog_post_info_block"><div id="BlogPostCategory">
分类:
<a href="https://www.cnblogs.com/xuehaoyue/category/972472.html" target="_blank">工具</a></div>
<div id="blog_post_info">
<div id="green_channel">
<a href="javascript:void(0);" id="green_channel_digg" onclick="DiggIt(6650533,cb_blogId,1);green_channel_success(this,\'谢谢推荐!\');">好文要顶</a>
<a id="green_channel_follow" onclick="follow(\'fdceac23-09e7-e611-845c-ac853d9f53ac\');" href="javascript:void(0);">关注我</a>
<a id="green_channel_favorite" onclick="AddToWz(cb_entryId);return false;" href="javascript:void(0);">收藏该文</a>
<a id="green_channel_weibo" href="javascript:void(0);" title="分享至新浪微博" onclick="ShareToTsina()"><img src="https://common.cnblogs.com/images/icon_weibo_24.png" alt=""></a>
<a id="green_channel_wechat" href="javascript:void(0);" title="分享至微信" onclick="shareOnWechat()"><img src="https://common.cnblogs.com/images/wechat.png" alt=""></a>
</div>
<div id="author_profile">
<div id="author_profile_info" class="author_profile_info">
<a href="https://home.cnblogs.com/u/xuehaoyue/" target="_blank"><img src="https://pic.cnblogs.com/face/1100067/20170314194013.png" class="author_avatar" alt=""></a>
<div id="author_profile_detail" class="author_profile_info">
<a href="https://home.cnblogs.com/u/xuehaoyue/">妙音天女</a><br>
<a href="https://home.cnblogs.com/u/xuehaoyue/followees/">关注 - 2</a><br>
<a href="https://home.cnblogs.com/u/xuehaoyue/followers/">粉丝 - 30</a>
</div>
</div>
<div class="clear"></div>
<div id="author_profile_honor"></div>
<div id="author_profile_follow">
<a href="javascript:void(0);" onclick="follow(\'fdceac23-09e7-e611-845c-ac853d9f53ac\');return false;">+加关注</a>
</div>
</div>
<div id="div_digg">
<div class="diggit" onclick="votePost(6650533,\'Digg\')">
<span class="diggnum" id="digg_count">24</span>
</div>
<div class="buryit" onclick="votePost(6650533,\'Bury\')">
<span class="burynum" id="bury_count">0</span>
</div>
<div class="clear"></div>
<div class="diggword" id="digg_tips">
</div>
</div>
<script type="text/javascript">
currentDiggType = 0;
</script></div>
<div class="clear"></div>
<div id="post_next_prev">
<a href="https://www.cnblogs.com/xuehaoyue/p/6639029.html" class="p_n_p_prefix">« </a> 上一篇: <a href="https://www.cnblogs.com/xuehaoyue/p/6639029.html" title="发布于 2017-03-29 11:47">分块编码(Transfer-Encoding: chunked)</a>
<br>
<a href="https://www.cnblogs.com/xuehaoyue/p/6652900.html" class="p_n_p_prefix">» </a> 下一篇: <a href="https://www.cnblogs.com/xuehaoyue/p/6652900.html" title="发布于 2017-03-31 18:56">动态规划(一):矩阵取数问题</a>
</div>
</div>
</div>
<div class="postDesc">posted @
<span id="post-date">2017-03-31 11:40</span>
<a href="https://www.cnblogs.com/xuehaoyue/">妙音天女</a>
阅读(<span id="post_view_count">6114</span>)
评论(<span id="post_comment_count">14</span>)
<a href="https://i.cnblogs.com/EditPosts.aspx?postid=6650533" rel="nofollow">编辑</a>
<a href="javascript:void(0)" onclick="AddToWz(6650533);return false;">收藏</a></div>
</div>
</div><!--end: topics 文章、评论容器-->
</div>
<script src="https://common.cnblogs.com/highlight/9.12.0/highlight.min.js"></script>
<script>markdown_highlight();</script>
<script>
var allowComments = true, cb_blogId = 329862, cb_blogApp = \'xuehaoyue\', cb_blogUserGuid = \'fdceac23-09e7-e611-845c-ac853d9f53ac\';
var cb_entryId = 6650533, cb_entryCreatedDate = \'2017-03-31 11:40\', cb_postType = 1;
loadViewCount(cb_entryId);
loadSideColumnAd();
</script><a name="!comments"></a>
<div id="blog-comments-placeholder">
<div id="comment_pager_top">
</div>
<br>
<div class="feedback_area_title">评论列表</div>
<div class="feedbackNoItems">
<div class="feedbackNoItems"></div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions">
<a href="javascript:void(0);" onclick="return ReplyComment(3895543, \'k6LWhkwCnVgkKJLlmmdekSBduh4Q7h5tRzGCfaVfjlVq/EzrPQK36Q==\')">
回复
</a>
<a href="javascript:void(0);" onclick="return QuoteComment(3895543, \'k6LWhkwCnVgkKJLlmmdekSBduh4Q7h5tRzGCfaVfjlVq/EzrPQK36Q==\')">
引用
</a>
</span>
</div>
<a href="#3895543" class="layer">#1楼</a>
<a name="3895543" id="comment_anchor_3895543"></a>
<span class="comment_date">2018-01-23 11:09</span>
<a id="a_comment_author_3895543" href="https://www.cnblogs.com/mukekeheart/" target="_blank">mukekeheart</a>
</div>
<div class="feedbackCon">
<div id="comment_body_3895543" data-format-type="Ubb" class="blog_comment_body cnblogs-ubb">
请问下如何设置字体大小呢
</div>
<div class="comment_vote">
<span class="comment_error" style="color: red"></span>
<a href="javascript:void(0);" class="comment_digg" onclick="return voteComment(3895543, \'Digg\', this.parentElement, false);">
支持(0)
</a>
<a href="javascript:void(0);" class="comment_burry" onclick="return voteComment(3895543, \'Bury\', this.parentElement, false);">
反对(0)
</a>
</div>
<span id="comment_3895543_avatar" style="display:none">
https://pic.cnblogs.com/face/926487/20180313105754.png
</span>
</div>
</div>
<div class="feedbackItem">
<div class="feedbackListSubtitle">
<div class="feedbackManage">
<span class="comment_actions">
<a href="javascript:void(0);" onclick="return ReplyComment(3900552, \'ntXUPlsiMzyfJn0uJlJpe8jcdgT0BqMpK6FW4kWw5dqRl5G1EwPsqg==\')">
回复
</a>
<a href="javascript:void(0);" onclick="return QuoteComment(3900552, \'ntXUPlsiMzyfJn0uJlJpe8jcdgT0BqMpK6FW4kWw5dqRl5G1EwPsqg==\')">
引用
</a>
</span>
</div>
<a href="#3900552" class="layer">#2楼</a>
<a name="3900552" id="comment_anchor_3900552"></a>
<span class="comment_date">2018-01-30 17:47</span>
<a id="a_comment_author_3900552" href="https://www.cnblogs.com/houhaibushihai/" target="_blank">houhaibushihai</a>
</div>
<div class="feedbackCon">
<div id="comment_body_3900552" data-format-type="Ubb" class="blog_comment_body cnblogs-ubb">
首先感谢