纯JS实现页面滚动至顶部并自动显示或隐藏
来源:互联网 发布:人工智能的股票有哪些 编辑:程序博客网 时间:2024/06/01 07:14
**博主最近在试着写一些简单的JS组件,一方面锻炼自己的JS功底,另一方面也为将来JS组件复用打好基础**
我们在浏览网页时常常看到这样的JS组件
这个是CSDN博客的返回顶部按钮,这种按钮是瞬间回到页面顶部,到页面顶部后的消失也是立马消失,而我们今天要写的是逐步返回至顶部,并逐步消失,在页面往下拉后,按钮也是逐步出现。 其实大致逻辑很简单,就是点击之后通过 setInterval 和 scrollTop 逐步的减少滚动条的Top距离,关键部分代码如下。
var set = setInterval(function(){ var toTop = document.documentElement.scrollTop||document.body.scrollTop; if(toTop<=0) clearInterval(set); document.documentElement.scrollTop=toTop-50; },1);
这里有个要注意的地方就是 toTop 在不同浏览器的获取方法不同。 然后我们要做的就是当页面回到顶部时,按钮能逐步消失,在离开顶部后也能逐步显现。 大致逻辑也是利用 setInterval 函数,这里有两个关键点。 (1)博主采用了判断滚动条的Top距离是否小于100来判断是否到达顶部,以此来触发按钮消失事件,那么这里就有一个问题,如果用户在到达顶部后,又移动了滚动条,而且还是在100距离以内一直移动,就会一直触发按钮消失的事件,导致多线程互相影响,产生互斥,所以这里博主采用了信号量的防止互斥的办法,isuse,若isuse==false,则说明没有线程在操作按钮,允许线程进入,并在线程进入后,立马设置 isuse=true,防止其他线程进入。 (2)在执行按钮消失事件的时候,博主是用按钮元素逐渐增大他与父元素之间的距离,也就是逐步增大 top 属性以实现按钮向下逐步消失,那么我们就需要实时获取 top 的大小,由于博主才用外部CSS,所以这里采用了计算样式,window.getComputedStyle。 关键部分代码如下
if(toTop < 100){ if(isuse===true) //如果资源已经被占用,则直接回退 return; else{ var rollDown = ele.parentNode; var currentTop = window.getComputedStyle(rollDown, null)['top']; if(currentTop.replace('px', '') >= 100) return; var set = setInterval(function(){ var currentTop = window.getComputedStyle(rollDown, null)['top']; if(currentTop.replace('px', '') >= 100){ clearInterval(set); isuse = false; } else{ rollDown.style.top = parseInt(currentTop.replace('px', ''), 10) + 3 + 'px'; isuse = true; } }, 1); } }
大致代码就是这样了,页面下移,按钮出现的代码只需在上述代码上稍作修改即可,这里不再赘述。
阅读全文
0 0
- 纯JS实现页面滚动至顶部并自动显示或隐藏
- jQuery实现页面滚动时顶部动态显示隐藏
- jQuery实现页面滚动时顶部动态显示隐藏
- 滚动条事件,当页面滚动到距顶部一定高度时某DIV自动隐藏和显示
- 滚动条事件,当页面滚动到距顶部一定高度时某DIV自动隐藏和显示
- js判断滚动条是否已到页面最底部或顶部实例-拓展(逐渐-自动下滑滚动)
- No 6 · js实现回到顶部和双击页面自动滚动
- 纯js 滚动到顶部函数分享
- js 滚动到指定位置显示或隐藏元素
- js页面自动刷新,并显示剩余时间
- JS实现页面数值滚动显示
- 自动显示隐藏返回顶部功能
- js判断滚动条是否已到页面最底部或顶部实例
- 滚动返回页面顶部的JS特效
- js实现超过页面一屏后,点击图标滚动到页面顶部top
- 百分百纯js实现回到顶部按钮
- js隐藏与显示回到顶部按钮
- JS实现返回页面顶部
- Struts2之ModelDriven接口实现登陆及退出
- 非单调队列
- html li标签前面添加图标三种方法
- AlertDialog样式
- 文件上传并且把文件名字保存到数据库(java+js代码)
- 纯JS实现页面滚动至顶部并自动显示或隐藏
- spring security3 配置使用注解
- Kotlin Reference (九) 抽象类、密封类
- HTML5 CSS3 经典案例:无插件拖拽上传图片 (支持预览与批量) (一)
- bat脚本执行带参数的sql指令(sql server)
- CenterOS-6.5 64位下载
- android zip 递归打包压缩,解压
- Android线程池详解
- Bootstrap Table总结