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

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

背景:

博主的博客希望实现能够在点击到某个文章的时候,跳转完了之后,页面能够自主的向下滚动到浏览的区域,因为博主的工作是搞java的,js方面在大一大二的时候搞过,有些东西忘记了,或者还没有接触到,有技术的盲区(可能对于阅读这篇文章的你来说有些可笑~),不管那么多,记录下来,以便以后维护。

上代码:

  function article_top(){
   //判断本次页面是否是文章,在我的hexo中,文章的页面是html的地址,是经过设置的,如果是初始的话,我记得好像是md结尾的,这里读者自行设置。
   //console.log(window.location.pathname)
	//打印出来的结果是http://localhost:4000/dayuhaitang.html中的dayuhaitang.html
    var pathname = window.location.pathname
    //获取我的头部的高度,下面会用到
    var height = $(".header").css("height");
    //判断是否是文章的页面
    if (pathname.indexOf("html")>0) {
	//使用animate函数进行动态的滚动效果
	//2018.12.7进行修改,将下面的$("html,body")改为了$("html,article"),因为页面中有fixed的div,会影响到他们~
      $("html,article").animate({scrollTop:height},500)
    }
  }
  //给滚动效果的函数设定timeout函数,这个函数有很大的作用,在下面我会详细的讲解。
  setTimeout(article_top,800);

这个简单的函数中遇到的问题:

判断是否是文章的页面

var pathname = window.location.pathname

这个不难google一下就出来了,主要是想到通过什么来判断

滚动函数

$("html,body").animate({scrollTop:height},500)

这个函数我查了好久,浏览w3c等网站均未实现。

最后通过这篇文章实现了:http://caibaojian.com/jquery-scrollto.html

感谢!

问题:需要在body前面加heml,就是一个父类吧

实现滚动后,滚动条会不断的上下跳动,页面闪烁。

背景:

这个问题,调试了一下午,聪明的我一定也想到了,在我的next主题中一定设置了(官方自己设置的)如果是文章页面会自动滚动到顶部,而我的hexo next中加入了require函数,以便实现提升加载速度,因为require是异步加载的,所以我的函数和系统预置的函数会出现执行顺序抢夺的问题,就会出现似上非上,似下非下的不断跳动闪烁的情况,有时候出现有时候不出现,虽然只是很短的时间,但是对于页面的效果有不小的影响。

我试图阅读源码,修改官方的函数,但是发现真的找不到,包括从页面打断点调试,能力有限好吧。

上百度,上google,发现有类似的问题。博文地址:https://blog.csdn.net/cen_cs/article/details/79018061 , 当然并并没有很好的解决我的问题,但是有不小的启发,因为timeout在js和jq中实现的方式是不一样的。

通过阅读相关的文档,对于timeout函数有了一定的理解:就是在等待了设定的指定时间后在执行自己的函数

对于timeout的规范写法参考的文章:https://blog.csdn.net/qq_39098813/article/details/80746465

收获:

通过以上的分析,如果读者读到了这里,(如果是和我一样的小白的话)相信您一定或多或少有一定的收获吧。

写给读者的话:

如果读者发现了代码中有错误的地方,(虽然只有几行),请您一定及时的联系我,大家共同进步!

hexo next 主题 : 实现点击跳转到文章的时候文章的页面自动实现滚轮效果,向下滚动到阅读的位置。的更多相关文章

  1. Hexo NexT主题添加点击爱心效果

    给NexT主题内添加页面点击出现爱心的效果 创建js文件 在/themes/next/source/js/src下新建文件clicklove.js,接着把该链接下的代码拷贝粘贴到clicklove.j ...

  2. hexo next主题中关于pc端点击链接没问题,移动端点击链接页面不显示。

    个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io 背景 hexo next主题,本人diy的时候 ...

  3. Hexo NexT主题/cnblog等博客增加点击出现红心的特效

    查看效果 每日前端 我的博客 实现:1.下载这段js代码到项目目录 ===>下载地址2.在需要的地方添加js代码 <script type="text/javascript&qu ...

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

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

  5. hexo多主题切换

    今天看到一个朋友在github上面的issue 大概问题就是怎么在不同的电脑上面使用 git有个这么个东西Submoudle中文叫做子模块 具体使用教程看这里Git-工具-子模块 这里只说怎么搞hex ...

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

    文章目录 效果 scrollReveal简单介绍以及简单操作 参考文档: next主题中加入scrollReveal 给article标签添加属性 给底部的不蒜子添加属性 本地引入依赖并且编写启动函数 ...

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

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

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

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

  9. Hexo、主题、部署上线

    Hexo.主题.部署上线 安装Hexo git和nodejs安装好后,就可以安装hexo了,你可以先创建一个文件夹MyBlog,用来存放自己的博客文件,然后cd到这个文件夹下(或者在这个文件夹下直接右 ...

随机推荐

  1. codeforces750E New Year and Old Subsequence 矩阵dp + 线段树

    题目传送门 思路: 先看一个大牛的题解 题解里面对矩阵的构造已经写的很清楚了,其实就是因为在每个字符串都有固定的很多中状态,刚好可以用矩阵来表达,所以$(i,j)$这种状态可以通过两个相邻的矩阵的$m ...

  2. Aria2 Centos8 安装配置

    使用chkconfig 或者 chkconfig –list就可以看出当前系统已经设置的各个服务在各个运行级别下的开闭状态.如果我们想设置某个服务自启动或者关闭的话,那么只需要按照下面的格式使用即可 ...

  3. spark-sql中的分析函数的使用

    分析函数的应用场景: (1)用于分组后组内排序 (2)指定计算范围 (3)Top N (4)累加计算 (5)层次计算 分析函数的一般语法: 分析函数的语法结构一般是: 分析函数名(参数)  over  ...

  4. Redis探索之路(一):Redis简介

    一:NOSQL NotOnlySQL 反SQL运动,非关系型数据库(区别于Mysql关系型书库). 随着Web2.0兴起,“高性能”,“高并发”成为主流. NoSQL以key-value形式存储数据, ...

  5. leetcood学习笔记-110-平衡二叉树

    ---恢复内容开始--- 题目描述: 方法一: class Solution(object): def isBalanced(self, root): """ :type ...

  6. 容斥原理解一般不定方程——cf451E经典题

    /* 给定n个盒子,第i个盒子有ai朵花,现在从中选取m朵花,问选取方案数 用容斥定理解决 m=x1+x2+..+xn C(m+n-1,n-1)+sum{ (-1)^p * C(m+n-1-(1+n1 ...

  7. vijos1710 Mrw的工资计划

    #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> ...

  8. Android Canvas save和restoreToCount

    @Override public void draw(Canvas canvas) { if (mDrawable!=null) { int sc=canvas.save(); if (mAnimat ...

  9. Unity shader之金属质感衣服

    一套QQ飞车的衣服,模仿其效果写的shader,效果如下: 部分shader如下: Shader "qq/Cloth" { Properties { _MainTex (" ...

  10. Nginx:413 Request Entity Too Large 的解决方法

    报错信息413 Request Entity Too Large 解决方法: (20M大小,自己调节,根据文件大小.)修改 php 的配置文件 /etc/php5/fpm/php.ini upload ...