个人博客:https://mmmmmm.me

源码:https://github.com/dataiyangu/dataiyangu.github.io

效果

https://mmmmmm.me

scrollReveal简单介绍以及简单操作

就是在鼠标滑动的时候,页面中的某个模块会动态的加载出来,不会显得那么突兀,增加页面的动态效果。

参考文档:

http://www.dowebok.com/134.html

https://blog.csdn.net/lp2659359879/article/details/52582892

next主题中加入scrollReveal

给article标签添加属性

进入目录themes/next/layout/_macro/post.swig

搜索到article标签的位置

  <article data-scroll-reveal="enter bottom move 60px over 0.6s after 0.05s" class="{{ post_class }}" itemscope itemtype="http://schema.org/Article">

如上面的代码data-scroll-reveal="enter bottom move 60px over 0.6s after 0.05s”,具体的值自行修改。

给底部的不蒜子添加属性

{% if theme.busuanzi_count.enable %}
<div class="busuanzi-count">
  <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>

  {% if theme.busuanzi_count.site_uv %}
    <span data-scroll-reveal="enter left move 60px over 1s after 0.05s" class="site-uv">
      {{ theme.busuanzi_count.site_uv_header }}
      <span class="busuanzi-value" id="busuanzi_value_site_uv"></span>
      {{ theme.busuanzi_count.site_uv_footer }}
    </span>
  {% endif %}

  {% if theme.busuanzi_count.site_pv %}
    <span data-scroll-reveal="enter right move 60px over 1s after 0.05s" class="site-pv">
      {{ theme.busuanzi_count.site_pv_header }}
      <span class="busuanzi-value" id="busuanzi_value_site_pv"></span>
      {{ theme.busuanzi_count.site_pv_footer }}
    </span>
  {% endif %}
</div>
{% endif %}

注意这里最好设置为60px,因为太大的话会导致移动端的盒子变大,宽度就会被撑开了。

本地引入依赖并且编写启动函数

目录如图:



scrollReveal是我们需要引入的官方的js

my_scrollReveal.js(我自定义的启动函数)如下

tip:这里我尝试通过js将data-scroll-reveal动态的加入到article中,可能是因为 window.scrollReveal 初始化的操作,会导致报错(数组越界),所以最后通过直接在post.swig文件中添加属性。

//如果刷新的页面不是首页,即点进去的文章的话,就不进行scrollReveal的操作
//因为在点进去的文章还是article标签包着的。
//我这里是根据pathname即浏览器访问地址进行判断的
var pathname = window.location.pathname
if (pathname.indexOf("html") < 0) {
//config默认配置,不过我用着好像不起作用,这里没有研究明白
  var config = {
    enter: 'right',
    move: '40px',
    over: '3s',
    after: '5',
    reset: true,
    init: true
  };
  //根据初始化配置创建一个scrollReveal对象
  window.scrollReveal = new scrollReveal(config);
  //初始化,会自动去页面中找到含有 data-scroll-reveal 属性的地方进行相关的操作。
  scrollReveal.init();
}

修改require.js主函数

因为在我的next中我应用了require,所以经引用上面两个js的操作放到了这里。

//主函数
require.config({
  waitSeconds: 0,
  paths: {
    "music": "/dist/music",
    //目前会消耗较多的性能,以后可能会去掉。
    "aplayer": "/js/src/aplayer",
    "backgroudLine": "/js/src/backgroudLine",
    "category": "/js/src/category",
    "jquery.share.min":"/js/src/pjax/share/jquery.share.min",
    /*不显示图标的话替换fonts*/
    "share":"/js/src/pjax/share",
    "css":"/js/src/pjax/css",
    "comments":"/js/src/pjax/comments_git",
    "love":"/js/src/love",
    "eye":"/js/src/pjax/eye",
    "header_left":"/js/src/pjax/header_left",
    "article_top":"/js/src/pjax/article_top",
    "easing":"/js/src/pjax/easing/jquery.easing.1.3",
    "scrollReveal":"/js/src/pjax/scrollReveal/scrollReveal",
    "my_scrollReveal":"/js/src/pjax/scrollReveal/my_scrollReveal",
  },

  shim: {
    'share': {
      deps: [
        'css!/js/src/pjax/share/share.min','jquery.share.min'
      ]
    },
    'comments': {
      deps: [
        'css!/js/src/pjax/comments/gitalk'
      ]
    },
    'header_left': {
      deps: [
        'easing'
      ]
    },
    'my_scrollReveal':{
      deps:[
        'scrollReveal'
      ]
    }
  }
});
require(['backgroudLine','music','aplayer','category','jquery.share.min','share','css','comments','love','eye',
'header_left','article_top','easing','scrollReveal','my_scrollReveal'], function (){
});

在最后加入了scrollReveal和my_scrollReveal这两个函数,分别对应于引入官方的js和自定义的启动函数。

修改pjax的函数

如果没有加入pjax的看到上面就结束了,我这里应用的pjax所以记录下。

通过require引入的方式,发现并不能成功,

并且报错:

pjaxMain.js:78 Uncaught TypeError: scrollReveal is not a constructor
    at pjaxMain.js:78
    at Object.execCb (require.js:30)
    at $.check (require.js:19)
    at $.enable (require.js:24)
    at $.init (require.js:18)
    at require.js:27

也是是说并没有定义,而且有时候会出现pjax处理后第一次没问题,第二次就又会报出同样的错误。

最后解决的方法是将上面官方的js和自己写的js封装在一个函数中然后通过我的pjax函数进行引用(跳转和回退)。

/*pjax主函数*/
$(document).pjax('a[target!=_blank]', '#pjax-container', {
  fragment: '#pjax-container',
  timeout: 5000,
});
//用户通过浏览器的前进后退按钮,需要加载的js
$(window).on('popstate.pjax', function () {
  /*必须加*/
  // $(document).on('pjax:complete',
  //   function () {
      pjax();
    // })
})
$(document).on('pjax:start',
  function () {
    $(document).unbind('keyup')
  })
$(document).on('pjax:complete',
  function () {
    require.config({
      waitSeconds: 0,
      paths: {
        //这个是单独的
        "jquery.share.min":"/js/src/pjax/share/jquery.share.min",
        // "share":"/js/src/pjax/share",
        //这个也是单独的
        "css":"/js/src/pjax/css",
        "pjax_function_public":"/js/src/pjax/pjax_function_public",
        "comments":"/js/src/pjax/comments_git",
        "love":"/js/src/love"
      },
      shim: {
        'share': {
          deps: [
            'css!/js/src/pjax/share/share.min','jquery.share.min'
          ]
        },
        'comments': {
          deps: [
            'css!/js/src/pjax/comments/gitalk'
          ]
        },
      }
    });

    require(['jquery.share.min','share','css','pjax_function_public','comments'
    ], function () {
      pjax();

    });
  })

function pjax() {

 /*来必力评论*/
 //    comments_js();
/*gitalk评论*/
  gitalk();
  //护眼
  eye_js()
    //如果是文章,实现滚动效果
  article_top_js();
//不蒜子
  busuanzi_js();

  //自己写的分享
  pjaxshare();

// 分类的js
  category_js();
// 局部刷新后文章内容不显示bug的js
  opacity_js()
//点击有目录的文章sidebar不显示的bug解决
  motion_js()
  scrollspy_js()
  //utils_js()
  postdetails_js()
//lean数量统计的js,原来的js是在themes/next/layout/_third-party/analytics/lean-analytics.swig文件中
  lean_analytics();
  //百度推送js
  baidutuisong();
//     //右边sidebar滚轮效果消失了。
  initSidebarDimension()
  //懒加载
  lazyLoad();
  //捐赠的函数
  donate();
  //随鼠标的滚动文章动态出现的动画
  my_scrollReveal_js();
}

hexo next主题深度优化(十一),next主题中加入scrollReveal.js,让文章随着鼠标的滚动,出现点小动作。的更多相关文章

  1. hexo next主题深度优化(三),引入require.js,适配pjax。

    文章目录 require.js的好处, hexo next中加入require.js 新建一个main.js作为所有js的入口 pjax的require.js实现 关于require js适配过程中报 ...

  2. Jekyll + NexT + GitHub Pages 主题深度优化

    前言 笔者在用 Jekyll 搭建个人博客时踩了很多的坑,最后发现了一款不错的主题 jekyll-theme-next,但网上关于 Jekyll 版的 Next 主题优化教程少之又少,于是就决定自己写 ...

  3. hexo next主题深度优化(五),评论系统换成gittalk

    文章目录 背景: 开始: 新建comments_git.js 找到comments.swig在最后一个endif之前 引入代码 pjax加入gitalk 遇到的问题 所有的页面共享的一个评论issue ...

  4. hexo next主题深度优化(二),懒加载。

    文章目录 tip:没有耐心的可以直接看:正式在hexo next中加入懒加载(最下面) 废话 背景 懒加载简单介绍 引入js 重点!敲黑板了!!! 完善懒加载函数 懒加载函数可配置的参数 正式在hex ...

  5. hexo next主题深度优化(一),加入pjax功能。

    文章目录 背景: 进入正题 pjax初体验--instantclick 真正的pjax 第一步 第二步 第三步 第四步 专门基于hexo next主题的pjax(将丢失的js效果重现) 将下面讲到的提 ...

  6. hexo next主题深度优化(七),cdn加速。

    文章目录 注: 正题: 免费cdn 收费cdn 个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io ...

  7. hexo next主题深度优化(六),使用hexo-neat插件压缩页面,大幅度提升页面性能和响应速度。

    文章目录 隆重感谢: 背景 开始 试水 成功的案例 安装插件,执行命令. hexo _config.yml文件添加 坑 跳过压缩文件的正确配置方式 压缩html时不要跳过.md文件 压缩html时不要 ...

  8. hexo next主题深度优化(十),博文加密,不需要插件,极简模式,相对安全,融合pjax。

    文章目录 效果: 代码: 注意: 背景: 思路: https://www.jianshu.com/p/90c0a15c6f36 http://zhailiange.com/2017/07/06/hex ...

  9. hexo next主题深度优化(九),给博客加入主题,护眼主题,护眼色。

    文章目录 背景 效果 码 _layout.swig custom.styl eye.js 引用eye.js 直接引用 main.js pjax的函数中重写 个人博客:https://mmmmmm.me ...

随机推荐

  1. 序列递推——cf1204E(好题)

    /* 显然用dp[i][j]来表示i个1,j个-1的结果 dp[i][j]由dp[i-1][j]和dp[i][j-1]转移而来 即dp[i][j]对应的所有序列,都可以由dp[i-1][j]在前面加一 ...

  2. BZOJ 2326: [HNOI2011]数学作业(矩阵乘法)

    传送门 解题思路 NOIp前看到的一道题,当时想了很久没想出来,NOIp后拿出来看竟然想出来了.注意到有递推\(f[i]=f[i-1]*poww[i]+i\),\(f[i]\)表示\(1-i\)连接起 ...

  3. Transactional事务管理操作

    Transactional的属性: alue String 可选的限定描述符,指定使用的事务管理器 propagation enum: Propagation 可选的事务传播行为设置 isolatio ...

  4. xshell突出显示集

    xshell突出显示集(参考mobaxterm,直接拷贝过来不行,应该是xshell对正则表达式的支持不够好): Underline: \b(http(s)?://[A-Za-z0-9_./& ...

  5. 浅谈学习selenium的一些知识点的总结

    学习自动化测试,先得学习一门语言.自动化对语言要求掌握的程度不深,但必须得会基本的入门语法. 我学习的是python2,简单,易懂,上手快. 每天敲就是了. 我的学习路径是: 先学习一段时间pytho ...

  6. 装nginx遇到的坑 未完待续

    首装nginx时 server { listen 8066;  监听端口号 server_name localhost;   监听地址 location / goldwind{   root /roo ...

  7. IdentityServer4认证服务器集成Identity&配置持久化数据库

    文章简介 asp.net core的空Web项目集成相关dll和页面文件配置IdnetityServer4认证服务器 Ids4集成Identity Ids4配置持久化到数据库 写在最前面,此文章不详细 ...

  8. LintCode 汉诺塔

    题目链接:https://www.lintcode.com/problem/tower-of-hanoi/description 题目大意 经典递归问题. 分析 由于是经典问题了,这里不讨论用递归实现 ...

  9. C语言结构体和函数

    #include <stdio.h> struct Person { char *name; }; void change1(struct Person p); void change2( ...

  10. SQLite 小调研

    一. 概况: SQLite 是 D. Richard Hipp 于 2000 年采用 C 语言编写的一个轻量级.跨平台的关系型数据库,支持大部分 SQL92 标准(比如视图.事务.触发器.blob 数 ...