基于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 相关文章推荐
基于jQuery的ajax功能实现web service的json转化
Aug 29 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
Jun 22 Javascript
jQuery之尺寸调整组件的深入解析
Jun 19 Javascript
如何动态的导入js文件具体该怎么实现
Jan 14 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
Nov 20 Javascript
RGB和YUV 多媒体编程基础详细介绍
Nov 04 Javascript
html+javascript+bootstrap实现层级多选框全层全选和多选功能
Mar 09 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
Aug 18 jQuery
使用JS组件实现带ToolTip验证框的实例代码
Aug 23 Javascript
详解require.js配置路径的用法和css的引入
Sep 06 Javascript
vue-cli4.0多环境配置变量与模式详解
Dec 30 Vue.js
JS前端轻量fabric.js系列之画布初始化
Aug 05 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&amp;mysql(六)
2006/10/09 PHP
PHP往XML中添加节点的方法
2015/03/12 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
2016/10/29 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
微信小程序:数据存储、传值、取值详解
2019/05/07 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
详解Vue3 Teleport 的实践及原理
2020/12/02 Vue.js
Python中的CURL PycURL使用例子
2014/06/01 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
Pandas读写CSV文件的方法示例
2019/03/27 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
Hotels.com越南:酒店预订
2019/10/29 全球购物
请介绍一下WSDL的文档结构
2013/03/17 面试题
商务英语求职自荐信范文
2013/12/24 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
学生周末长期请假条
2014/02/15 职场文书
党员创先争优承诺书
2014/03/26 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
小学生通知书评语
2014/12/31 职场文书
财务部岗位职责
2015/02/03 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书