zoukankan      html  css  js  c++  java
  • 为自己的博客园添加目录锚点和返回顶部

    下面的代码可以在博客园的“设置”里通过文件的方式引入。

    方法一:

    适合不会改代码的小白,以及不需要做个性化修改的朋友。

    优点:只用操作1步

    缺点:不能自定义锚点的范围(设置的基本可以通用),以及个性化定制

    页首引入

    1. <linktype="text/css"rel="stylesheet"href="http://files.cnblogs.com/files/miangao/maodian.css">
    2. <scriptsrc="http://files.cnblogs.com/files/miangao/maodian.js"></script>
    3. <scriptsrc="http://files.cnblogs.com/files/miangao/bootstrap.min.js"></script>

    例:

    方法二:

    适合会修改JS代码的朋友(可选择做个性化修改),比方法一多操作两步。

    文件引入的方式不方便修改,于是我这里写在“设置”里;

    如果你没有获取博客园JS的权限,那需要去提交申请获取。

    我的一天时间就申请下来了,申请好了是这个样子

    添加自动目录的基本原理

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

    博客侧边栏广告内引入

     *经过我多次测试发现,为啥直接点复制代码,粘贴过去的代码就要报错,手动选择复制过去的代码就不会。

    复制代码
    1. <scripttype="text/javascript">
    2. //以下是锚点JS
    3. var a = $(document);
    4. a.ready(function(){
    5. var b = $('body'),
    6. d ='sideToolbar',
    7. e ='sideCatalog',
    8. f ='sideCatalog-catalog',
    9. g ='sideCatalogBtn',
    10. h ='sideToolbar-up',
    11. i ='<div id="sideToolbar"style="display:none;"><div class="sideCatalogBg"id="sideCatalog"><div id="sideCatalog-sidebar"><div class="sideCatalog-sidebar-top"></div><div class="sideCatalog-sidebar-bottom"></div></div><div id="sideCatalog-catalog"><ul class="nav"style="225px;zoom:1"></ul></div></div><a href="javascript:void(0);"id="sideCatalogBtn"class="sideCatalogBtnDisable"></a></div>',
    12. j ='',
    13. k =200,
    14. l =0,
    15. m =0,
    16. n =0,
    17. //限制存在个数,如数量过多,则只显示h2,不显示h3
    18. //o, p = 13,
    19. o, p =100,
    20. q =true,
    21. r =true,
    22. s = b;
    23. if(s.length ===0){
    24. return
    25. };
    26. b.append(i);
    27. //指定获取目录的范围-------------这一点非常重要,因为每个人指定的范围都不一样,所以这是要修改的地方
    28. //o = s.find(':header');
    29. o = $('#cnblogs_post_body').find(':header')
    30. if(o.length > p){
    31. r =false;
    32. var t = s.find('h2');
    33. var u = s.find('h3');
    34. if(t.length + u.length > p){
    35. q =false
    36. }
    37. };
    38. o.each(function(t){
    39. var u = $(this),
    40. v = u[0];
    41. var title = u.text();
    42. var text = u.text();
    43. u.attr('id','autoid-'+ l +'-'+ m +'-'+ n)
    44. //if (!u.attr('id')) {
    45. // u.attr('id', 'autoid-' + l + '-' + m + '-' + n)
    46. //};
    47. if(v.localName ==='h2'){
    48. l++;
    49. m =0;
    50. if(text.length >14) text = text.substr(0,20)+"...";
    51. j +='<li><span>'+ l +'&nbsp&nbsp</span><a href="#'+ u.attr('id')+'" title="'+ title +'">'+ text +'</a><span class="sideCatalog-dot"></span></li>';
    52. }elseif(v.localName ==='h3'){
    53. m++;
    54. n =0;
    55. if(q){
    56. if(text.length >12) text = text.substr(0,16)+"...";
    57. j +='<li class="h2Offset"><span>'+ l +'.'+ m +'&nbsp&nbsp</span><a href="#'+ u.attr('id')+'" title="'+ title +'">'+ text +'</a></li>';
    58. }
    59. }elseif(v.localName ==='h4'){
    60. n++;
    61. if(r){
    62. j +='<li class="h3Offset"><span>'+ l +'.'+ m +'.'+ n +'&nbsp&nbsp</span><a href="#'+ u.attr('id')+'" title="'+ title +'">'+ u.text()+'</a></li>';
    63. }
    64. }
    65. });
    66. $('#'+ f +'>ul').html(j);
    67. b.data('spy','scroll');
    68. b.data('target','.sideCatalogBg');
    69. $('body').scrollspy({
    70. target:'.sideCatalogBg'
    71. });
    72. $sideCatelog = $('#'+ e);
    73. $('#'+ g).on('click',function(){
    74. if($(this).hasClass('sideCatalogBtnDisable')){
    75. $sideCatelog.css('visibility','hidden')
    76. }else{
    77. $sideCatelog.css('visibility','visible')
    78. };
    79. $(this).toggleClass('sideCatalogBtnDisable')
    80. });
    81. $('#'+ h).on('click',function(){
    82. $("html,body").animate({
    83. scrollTop:0
    84. },500)
    85. });
    86. $sideToolbar = $('#'+ d);
    87. //通过判断评论框是否存在显示索引目录
    88. var commentDiv = $("#blog-comments-placeholder");
    89. a.on('scroll',function(){
    90. //评论框存在才调用方法
    91. if(commentDiv.length >0){
    92. var t = a.scrollTop();
    93. if(t > k){
    94. $sideToolbar.css('display','block');
    95. $('#gotop').show()
    96. }else{
    97. $sideToolbar.css('display','none')
    98. $('#gotop').hide()
    99. }
    100. }
    101. })
    102. });
    103. //以上是锚点JS
    104. //以下是返回顶部JS
    105. $(function(){
    106. $('body').append('<div id="gotop" onclick="goTop();"></div>');
    107. });
    108. function goTop(u, t, r){
    109. var scrollActivate =!0;
    110. if(scrollActivate){
    111. u = u ||0.1;
    112. t = t ||16;
    113. var s =0,
    114. q =0,
    115. o =0,
    116. p =0,
    117. n =0,
    118. j =0;
    119. document.documentElement &&(s = document.documentElement.scrollLeft ||0, q = document.documentElement.scrollTop ||0);
    120. document.body &&(o = document.body.scrollLeft ||0, p = document.body.scrollTop ||0);
    121. n = window.scrollX ||0;
    122. j = window.scrollY ||0;
    123. s =Math.max(s,Math.max(o, n));
    124. q =Math.max(q,Math.max(p, j));
    125. p =1+ u;
    126. window.scrollTo(Math.floor(s / p),Math.floor(q / p));
    127. 0< s ||0< q ? window.setTimeout('goTop('+ u +', '+ t +')', t):'undefined'!=typeof r && r()
    128. }else{
    129. scrollActivate =!0
    130. }
    131. }
    132. //以上是返回顶部JS
    133. </script>
    复制代码

    其中需要怎么定制,就看朋友们自己修改JS代码了

    页首引入

    1. <linktype="text/css"rel="stylesheet"href="http://files.cnblogs.com/files/miangao/maodian.css">

    页尾引入

    1. <scriptsrc="http://files.cnblogs.com/files/miangao/bootstrap.min.js"></script>

    好了,这样就完成了,是不是很超级简单。

    希望能给大家带来一点便利,谢谢!

  • 相关阅读:
    window下安装nvm、node.js、npm的步骤
    命令行创建Android模拟器
    2016 JavaScript 各种排名
    js开发工作流
    javascript流行工具
    Linux下进程间通信的常用方法
    Linux下回收子进程wait函数和waitpid函数的基本使用
    Linux下exec函数族比如execve等函数的基本使用
    Linux下创建子进程fork函数等的基本使用
    vi操作键盘图
  • 原文地址:https://www.cnblogs.com/yidashi110/p/10093244.html
Copyright © 2011-2022 走看看