zoukankan      html  css  js  c++  java
  • 给Jekyll静态博客添加ScrollSpy博文大纲目录







    最近又双叒把博客模板换成了Jekyll,Jekyll无论上手难度和修改难度都是目前所见流行模板中最低的(以无基础小白的角度来讲),主题也相当丰富。这几年从Django折腾到纯手工自制,再到Hugo和Jekyll,不打算再折腾了,除非再出现更简单更酷炫的新模板吧。

    内置TOC

    jekyll的默认markdown语法是Kramdown。本身支持博文TOC,使用方法和原装Markdown差不多。

    在文章头部输入以下文本,会根据header生成目录树。

    * awsl  //星号后可能需要空一格,后面需要加上一段文本(用途不明,但是非加不可) 
    {:toc}
    

    效果如下

    karmdown内置TOC

    你也看到了,只能放在文章头部,而且太丑了,不能忍。




    添加ScrollSpy博文menu

    jekyll官网上列举了一些插件,其中包括一个TOC生成插件jekyll-toc-generator。但是这个插件要求预先安装一个文本解析器(nokogiri),该工具不支持ruby2.7以上的ruby版本,因此作罢开始另寻他法。

    Scrollnav.js

    本篇使用的插件是Scrollnav.js。是一个超轻量的浮动菜单脚本,使用便捷是第一要义。

    使用方法❤

    官网(Link)提供教程和演示demo。当然实际使用起来比官网教程更简单点。

    step 1: 添加scrollnav脚本

    在博文(post)的layout文件中添加scollnav相关html、js代码。可以下载scrollnav.js然后包含本地js文件,也可以直接用在线脚本:

            <script src="https://unpkg.com/scrollnav@3.0.1/dist/scrollnav.min.umd.js"></script>
    
            <script>
                const ct = document.querySelector('.post-content');  //".post-content"指向文章内容所在的div,需根据实际情况修改
                scrollnav.init(ct, { 
                    debug: false,
                    easingStyle: 'linear',
                    //section为一级目录,subsection为二级目录
                    //以下两行意为h3为一级目录,h4为二级目录(个人只需要一级目录,所以注释了二级目录)
                    sections: ($('.post-content > h1').length>0) ? 'h3' : 'h4',  
                    //subSections: ($('.post-content > h1').length>0) ? 'h4' : 'h5',
                });
            </script>
    

    step 2:添加样式

    修改sass文件夹中post相关样式文件(_post.scss)。

    
    .scroll-nav__list, .scroll-nav__sub-list {
      margin: 0;
      padding-left: 1.4em;
      list-style-type: none;
      line-height: 20px;
    }
    
    
    
    .scroll-nav__item {
      margin-bottom: 5px;
      list-style-type: none;
    }
    
    .scroll-nav__item--active > a {
      //padding: 5px;
      font-weight: bold;
      position: relative;
      color: #000000;
      //background: $red;
      text-decoration: none;
      //transition: 0.5s;
      &:hover{
          color:$black
      }
    }
    
    .scroll-nav__link {
      color: $black;
      text-decoration: none;
      //display: block;
      //margin: 0 auto;
      //padding-left: 42px;
    }
    

    最终menu效果如下:

  • 相关阅读:
    python 单例模式
    socketserver 多进程、多线程应用实例
    socket 编程的一些应用例子
    模拟一个http 请求的json格式报文,带 rsa 签名操作
    python excel基本操作
    多线程 进程间共享变量等
    多线程 multiprocessing 的几个小例子
    mysql 数据库的相关操作
    正则表达式匹配IP地址
    32-服务的容量规划:怎样才能做到有备无患
  • 原文地址:https://www.cnblogs.com/liez/p/12697535.html
Copyright © 2011-2022 走看看