个人博客: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. 几何向量gcd+暴力枚举——cf552

    两两枚举点(xi,yi)(xj,yj)对于第三个点(xk,yk),只要向量ik和ij方向不同即可 只要(xj-xi,yj-yi) 和 (xk-xi,yk-yi)化简后不相同即可,用每个点开个map存下 ...

  2. vue简单的input校验手机号

    <input class="phone input-style " :class="{'err-input' : phone.err}" v-model= ...

  3. [NOIP模拟测试9]题(Problem) 题解 (组合数全家桶+dp)

    达哥送分给我我都不要,感觉自己挺牛批. $type=0:$ 跟visit那题类似,枚举横向移动的步数直接推公式: $ans=\sum C_n^i \times C_i^{\frac{i}{2}} \t ...

  4. Django Shell 如何对数据库进行测试

    Django 如何对数据库进行测试 Python manager.py shell Import django django.setup() from my_app.models import * 开 ...

  5. 从客户端中检测到有潜在危险的 request.form值 以及 request.querystring[解决方法]

    一.从客户端中检测到有潜在危险的request.form值 当页面编辑或运行提交时,出现“从客户端中检测到有潜在危险的request.form值”问题,该怎么办呢?如下图所示: 下面博主汇总出现这种错 ...

  6. 12、testng.xml指定运行测试包、测试类、测试方法

    目录如下: TestFixture.java 代码如下: package com.testng.cn; import org.testng.annotations.*; public class Te ...

  7. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决

    这是我们开启了bin-log, 我们就必须指定我们的函数是否是1 DETERMINISTIC 不确定的2 NO SQL 没有SQl语句,当然也不会修改数据3 READS SQL DATA 只是读取数据 ...

  8. 豆瓣图书Top250

    从豆瓣图书Top250抓取数据,并通过词云图展示 导入库 from lxml import etree #解析库 import time #时间 import random #随机函数 import ...

  9. java-Day01

    什么是java语言 1995由美国SUN公司推出的高级编程语言(后2009年甲骨文公司收购SUN公司) 常用的DOS命令 盘符切换命令:盘符: 查看当前文件夹:dir 进入文件命令:cd 文件夹名 退 ...

  10. redis 部署方式及常见特性

    单机部署 redis的单机部署 如何保证redis的高并发和高可用? redis的主从复制原理?redis的哨兵原理? redis单机能承载多高并发?如果单机扛不住如何扩容扛更多的并发? redis会 ...