基于Javascript实现返回顶部按钮


Posted in Javascript onFebruary 29, 2016

一个网页内容一多, 就会分屏显示数据, 如果屏目很多, 用户访问的数据已经到了页面的底部, 这时候返回到顶部也是需要一点时间. 这样对用户体验来说, 可能就稍微逊了一点. 所以页面数据多的网页, 现在都会用一个"返回顶部"按钮来快速跳转到网页的顶部.
那现在我们就来实现这么一个功能.

这个页面我们就不写什么数据, 直接就加入一个a标签来作为返回顶部的按钮, 并给他一个class名称:top.

<a href="#" class="top">顶部</a>

然后设置其样式表:

body {
  height: 3000px;
}

.top {
  position: absolute;
  top: 120px;
  display: inline-block;
  width: 50px;
  height: 50px;
  line-height: 50px;
  text-decoration: none;
  text-align: center;
  background-color: #666666;
  color: #ffffff;
  right: 10px;
  transition: all 0.3s;
   visibility: hidden;
}
.top:hover {
  background-color: #ff3300;
}

这里body设定为3000的高度, 主要是让页面有滚动的效果. 按钮一般都是放在网页的右边靠下一点的位置. 这里我们通过position来设置.

我们还要分析一下, 当用户的访问的网页在页面的顶部时, 这个按钮肯定是不显示的. 所以我们这里用了visibility来控制按钮的显示与否.

界面很简单, 我们就先将就一下. 下面来分析JS的实现.

首先这个按钮是在整个网页的效果上, 因此监听滚动事件需要设置在整个窗口上. 因此,我们给window设置一个onscroll事件.

window.onscroll = function (e) {...}

在这个事件里我们来控制返回顶部按钮的上下位置, 和是否显示. 首先来完成上下位置的控制.

上下位置的控制, 我们肯定得计算scrollTop的高度, 以及网页单屏显示的高度. 当用户进入页面的时候, 我们默认给这个按钮放置在页面右中部位置. 这时候的计算是:

var n_half_height = window.screen.height / 2;

将这个值赋给按钮的top属性.

然后如果用户滚动的时候, 位置肯定是保持不变的, 这时候的计算应该是

var n_stop = e.target.scrollingElement.scrollTop; //获取scrollTop的高度
var n_top = n_stop + n_half_height;//得到位置

这是e 对象是onsroll里的参数event. 这里我使用的是谷歌浏览器.其他浏览器未测试. 如果需要兼容, 大家可以处理一下.
每滚动都得计算其高度, 所以这个应该是放入在onscroll事件中.然后,将这个值赋给按钮的top属性.

当然不要忘记一件事, 就是scrollTop为0的时候, 按钮不需要显示. 大于0的时候, 得让按钮显示. 前面讲过我们用visibility这个属性来控制的.这样代码就完整了.
Javascript完整代码

var ele_body = document.body;
var ele_top = document.getElementsByClassName("top")[0];
var n_half_height = window.screen.height / 2;
ele_top.style.top = n_half_height + "px";
window.onscroll = function (e) {
 var n_stop = e.target.scrollingElement.scrollTop;
 if (n_stop === 0 ) {
  ele_top.style.visibility = "hidden";
 }else {
  ele_top.style.visibility = "visible";
 }
 var n_top = n_stop + n_half_height ;
 ele_top.style.top = n_top + "px";
}

最后的效果展示:

基于Javascript实现返回顶部按钮

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
Javascript打印网页部分内容的脚本
Nov 17 Javascript
jQuery学习笔记之jQuery的事件
Dec 22 Javascript
JS实现日期加减的方法
Nov 29 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
Nov 02 Javascript
基于jquery实现无限级树形菜单
Mar 22 Javascript
使用 stylelint检查CSS_StyleLint
Apr 28 Javascript
js实现动态创建的元素绑定事件
Jul 19 Javascript
使用jQuery,Angular实现登录界面验证码详解
Apr 27 jQuery
Ionic学习日记实现验证码倒计时
Feb 08 Javascript
JS+H5 Canvas实现时钟效果
Jul 20 Javascript
js实现上传按钮并显示缩略图小轮子
May 04 Javascript
微信小程序实现watch监听
Jun 04 Javascript
JavaScript实现斗地主游戏的思路
Feb 29 #Javascript
jQuery取消特定的click事件
Feb 29 #Javascript
JavaScript+CSS实现的可折叠二级菜单实例
Feb 29 #Javascript
JS三级可折叠菜单实现方法
Feb 29 #Javascript
精通JavaScript的this关键字
May 28 #Javascript
javascript正则表达式总结
Feb 29 #Javascript
javascript计时器编写过程与实现方法
Feb 29 #Javascript
You might like
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
PHP中一个控制字符串输出的函数
2006/10/09 PHP
使用PHP编写发红包程序
2015/07/22 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
js实现的网站首页随机公告随机公告
2007/03/14 Javascript
javascript脚本调试方法小结
2008/11/24 Javascript
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
Javascript模块化编程(一)模块的写法最佳实践
2013/01/17 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
AngularJS中run方法的巧妙运用
2017/01/04 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
JS实现简单短信验证码界面
2017/08/07 Javascript
浅谈 Vue 项目优化的方法
2017/12/16 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
Python线程详解
2015/06/24 Python
深入解析Python中的集合类型操作符
2015/08/19 Python
Django卸载之后重新安装的方法
2017/03/15 Python
Python的装饰器使用详解
2017/06/26 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
python利用多种方式来统计词频(单词个数)
2019/05/27 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
最新大学生自我评价
2013/09/24 职场文书
科室工作个人总结的自我评价
2013/10/29 职场文书
行政专员工作职责
2013/12/22 职场文书
音乐教育感言
2014/03/05 职场文书
公司建议书怎么写
2014/05/15 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers