个人博客: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. PHP算法之电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23"输出:[" ...

  2. vue+element 构建的后台管理系统项目(1)新建项目

    1.运行 vue init webpack demo   这里的demo是你项目的名字 2.npm run dev 查看项目启动效果 3.安装Element cd 项目 cmd  运行 npm i e ...

  3. 如何配置vue-cli4.0

    这是一期主要分享vue-cli4.0配置 新建一个项目,最令人为难的是配置环境.拿vue来说,创建项目很简单,跟着文档走即可,但是要知道配置本地,测试,生产环境,以及反向代理等等,如果对于一个对vue ...

  4. JS自定义Array原型移除函数

    <script type="text/javascript"> //删除元素值 Array.prototype.remove = function(element){ ...

  5. thinkphp 数据分页

    通常在数据查询后都会对数据集进行分页操作,ThinkPHP也提供了分页类来对数据分页提供支持. 下面是数据分页的两种示例. 第一种:利用Page类和limit方法 $User = M('User'); ...

  6. bzoj1059题解

    [解题思路] 因为只要验证可行性,所以考虑行和考虑列是等价的,故我们只考虑行的交换操作. 这样,拆一波点,把每一行拆成两个点,左边为原交换行,右边为目标交换行,原问题等价于能否对这个二分图进行完全匹配 ...

  7. 陈云pytorch学习笔记_用50行代码搭建ResNet

    import torch as t import torch.nn as nn import torch.nn.functional as F from torchvision import mode ...

  8. NX二次开发-UFUN创建工程图注释UF_DRF_create_note

    NX9+VS2012 #include <uf.h> #include <uf_drf.h> #include <NXOpen/Annotations_Note.hxx& ...

  9. NX二次开发-char*转换成CString,多字节转换成Unicode使用方法

    //定义一个结构体记录 struct group { CString text; //定义一个CString std::vector<tag_t> boudaries; std::vect ...

  10. vue中使用router全局守卫实现页面拦截

    一.背景 在vue项目中使用vue-router做页面跳转时,路由的方式有两种,一种是静态路由,另一种是动态路由.而要实现对路由的控制需要使用vuex和router全局守卫进行判断拦截(安全问题文章最 ...