基于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 相关文章推荐
ie focus bug 解决方法
Sep 03 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
Jun 06 Javascript
js 将json字符串转换为json对象的方法解析
Nov 13 Javascript
JavaScript制作的可折叠弹出式菜单示例
Apr 04 Javascript
关于jQuery判断元素是否存在的问题示例探讨
Jul 21 Javascript
使用jQuery制作基础的Web图片轮播效果
Apr 22 Javascript
不使用script导入js文件的几种方法
Oct 27 Javascript
简单谈谈vue的过渡动画(推荐)
Oct 11 Javascript
详解使用React进行组件库开发
Feb 06 Javascript
bootstrap动态调用select下拉框的实例代码
Aug 09 Javascript
使用JavaScript破解web
Sep 28 Javascript
Webpack 4如何动态切割JS注入文件名详解
Jul 09 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
浅析PHP原理之变量(Variables inside PHP)
2013/08/09 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
CentOS7编译安装php7.1的教程详解
2019/04/18 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
JavaScript插入动态样式实现代码
2012/02/22 Javascript
自动刷新网页,自动刷新当前页面,JS调用
2013/06/24 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
对javascript继承的理解
2016/10/11 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
Python基于smtplib实现异步发送邮件服务
2015/05/28 Python
栈和队列数据结构的基本概念及其相关的Python实现
2015/08/24 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
windows10系统中安装python3.x+scrapy教程
2016/11/08 Python
Python下实现的RSA加密/解密及签名/验证功能示例
2017/07/17 Python
python 中的divmod数字处理函数浅析
2017/10/17 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
Python内置函数及功能简介汇总
2020/10/13 Python
Johnson Fitness澳大利亚:高级健身器材
2021/03/16 全球购物
大学生素质拓展活动方案
2014/02/11 职场文书
终止合同协议书
2014/04/17 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
超市创业计划书
2014/09/15 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书
大学生党课心得体会
2016/01/07 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
企业文化学习心得体会
2016/01/21 职场文书
党风廉政建设心得体会
2019/05/21 职场文书
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python
使用javascript解析二维码的三种方式
2021/11/11 Javascript