基于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 相关文章推荐
JS原型对象通俗&quot;唱法&quot;
Dec 27 Javascript
JavaScript获取路径设计源码
May 22 Javascript
javascript的document.referrer浏览器支持、失效情况总结
Jul 18 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
Jul 29 Javascript
javascript下拉列表中显示树形菜单的实现方法
Nov 17 Javascript
javascript实现倒计时跳转页面
Jan 17 Javascript
Angular2学习笔记——详解路由器模型(Router)
Dec 02 Javascript
bootstrap滚动监控器使用方法解析
Jan 13 Javascript
微信小程序实现鼠标拖动效果示例
Dec 01 Javascript
vue 路由子组件created和mounted不起作用的解决方法
Nov 05 Javascript
node.JS二进制操作模块buffer对象使用方法详解
Feb 06 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
May 29 jQuery
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 生成唯一id的几种解决方法
2013/03/08 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
深入phpMyAdmin的安装与配置的详细步骤
2013/05/07 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
2010/11/30 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
多个checkbox被选中时如何判断是否有自己想要的
2014/09/22 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
微信小程序 wx.request(object) API详解及实例代码
2016/09/30 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
JS实现的简单轮播图运动效果示例
2016/12/22 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
详解Vue中localstorage和sessionstorage的使用
2017/12/22 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
JSONP原理及应用实例详解
2018/09/13 Javascript
VUE DEMO之模拟登录个人中心页面之间数据传值实例
2019/10/31 Javascript
python字符串,数值计算
2016/10/05 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
python简单贪吃蛇开发
2019/01/28 Python
Python函数中不定长参数的写法
2019/02/13 Python
《画》教学反思
2014/04/14 职场文书
房屋出售授权委托书
2014/10/12 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
Oracle11g R2 安装教程完整版
2021/06/04 Oracle
一文搞懂Python Sklearn库使用
2021/08/23 Python