基于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方法+js一般方法+js面向对象方法实现拖拽效果
Aug 30 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
Sep 03 Javascript
React.js入门学习第一篇
Mar 30 Javascript
Vue.js每天必学之方法与事件处理器
Sep 06 Javascript
bootstrap laydate日期组件使用详解
Jan 04 Javascript
浅谈Javascript事件对象
Feb 05 Javascript
微信小程序 首页制作简单实例
Apr 07 Javascript
基于Jquery Ajax type的4种类型(详解)
Aug 02 jQuery
jQuery实现动态添加和删除input框实例代码
Mar 26 jQuery
详解vue的数据劫持以及操作数组的坑
Apr 18 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
Sep 21 Javascript
JavaScript声明变量和数据类型的转换
Apr 12 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
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
纯js简单日历实现代码
2013/10/05 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python入门_浅谈for循环、while循环
2017/05/16 Python
python正则表达式的使用
2017/06/12 Python
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
Python实现爬取并分析电商评论
2020/06/19 Python
pycharm导入源码的具体步骤
2020/08/04 Python
详解HTML5中的manifest缓存使用
2015/09/09 HTML / CSS
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
意大利火车票和铁路通行证专家:ItaliaRail
2019/01/22 全球购物
领导班子对照检查材料
2014/09/22 职场文书
销售人才自我评价范文
2014/09/27 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
老公出轨后的保证书
2015/05/08 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
导游词之安徽巢湖
2019/12/26 职场文书