基于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 相关文章推荐
网页自动跳转代码收集
Sep 27 Javascript
Wordpress ThickBox 点击图片显示下一张图的修改方法
Dec 11 Javascript
简介JavaScript中的unshift()方法的使用
Jun 09 Javascript
jQuery的内容过滤选择器学习教程
Apr 18 Javascript
巧用jQuery选择器提高写表单效率的方法
Aug 19 Javascript
浅析javascript中的Event事件
Dec 09 Javascript
canvas绘制爱心的几种方法总结(推荐)
Oct 31 Javascript
Vue 项目分环境打包的方法示例
Aug 03 Javascript
JavaScript设计模式之职责链模式应用示例
Aug 07 Javascript
vue项目创建并引入饿了么elementUI组件的步骤
Apr 11 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
Sep 16 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
Jul 29 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
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
Yii框架日志记录Logging操作示例
2018/07/12 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
AngularJS实现进度条功能示例
2017/07/05 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
vue全屏事件开发详解
2020/06/17 Javascript
python读取各种文件数据方法解析
2018/12/29 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
Python MySQL 日期时间格式化作为参数的操作
2020/03/02 Python
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
机电一体化自荐信
2013/12/10 职场文书
物流专员岗位职责
2014/02/17 职场文书
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
高中课前三分钟演讲稿
2014/09/13 职场文书
关于成立领导小组的通知
2015/04/23 职场文书
人工作失职检讨书
2015/05/05 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书