jQuery中页面返回顶部的方法总结


Posted in Javascript onDecember 30, 2016

当页面过长时,通常会在页面下方有一个返回顶部的button,总结一下,大概三种实现方法,下面说下各方法及优缺点。

方法一 锚点定位

<a href="#" class="top" id="top">返回?部</a>

这种方法设置方便,但缺点是会刷新页面(我是在同事的乐视手机上发现的)。

方法二 window.scrollTo(x,y)

<a href="javascript:scrollTo(0,0)" class="top" id="top">返回?部</a>

这种方法也很方便,并且不会刷新页面,缺点是没有滚动效果。

scrollTo接收的参数用来定位视口左上角在整个滚动内容区域的坐标,比如我设置scrollTo(100,100),就是让滚动内容的坐标(100,100)的点处在视口的左上角。

方法三 设置带有动画效果的滚动

原生方法

/* html部分 */
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<a href="javascript:;" class="top" id="top">返回?部</a>
</body>
<style>
/* css部分 */
div {
  height: 150px;
}
div:nth-child(odd) {
  background-color: #8ae238;
}
div:nth-child(even) {
  background-color: #66d9ef;
}
.top {
  position: fixed;
  right: 50px;
  bottom: 50px;
  display: block;
  width: 50px;
  height: 50px;
  font-size: 20px;
  background-color: white;
  display: none;
}
</style>
<script>
/* js代码 */
  var topBtn = document.getElementById('top');
  // 获取视窗高度
  var winHeight = document.documentElement.clientHeight;
  window.onscroll = function () {
    // 获取页面向上滚动距离,chrome浏览器识别document.body.scrollTop,而火狐识别document.documentElement.scrollTop,这里做了兼容处理
    var toTop = document.documentElement.scrollTop || document.body.scrollTop;
    // 如果滚动超过一屏,返回顶部按钮出现,反之隐藏
    if(toTop>=winHeight){
      topBtn.style.display = 'block';
    }else {
      topBtn.style.display = 'none';
    }
  }
  topBtn.onclick=function () {
    var timer = setInterval(function () {
      var toTop = document.documentElement.scrollTop || document.body.scrollTop;
      // 判断是否到达顶部,到达顶部停止滚动,没到达顶部继续滚动
      if(toTop == 0){
        clearInterval(timer);
      }else {
        // 设置滚动速度
        var speed = Math.ceil(toTop/5);
        // 页面向上滚动
        document.documentElement.scrollTop=document.body.scrollTop=toTop-speed;
      }
    },50);
  }
</script>

大概的思路就是:

为window绑定scroll事件,监听页面滚动距离,当超过一屏高度时,显示返回顶部的按钮

为按钮绑定点击事件,返回顶部的方法就是获取页面滚动的距离,然后计算步长,这里采用滚动距离除以5的方式,滚动速度由快到慢。这里使用定时器控制滚动的频率,建议设置较小一点的值,如果时间间隔过大会有‘跳帧'的感觉。
这种方法优点是有了动画效果,只是实现起来比较麻烦,下面介绍一下jQuery方法。

jQuery方法

jQuery方法只是在js代码部分不同,具体代码如下

<script>
/* js代码 */
$(window).on('scroll', function () {
  // 判断显示还是隐藏按钮
  if($(this).scrollTop()>=$(this).height()){
    $('#top').fadeIn('slow');
  }else {
    $('#top').fadeOut('slow');
  }
});
$('#top').on('click',function () {
  // 设置滚动动画,这里注意使用的是$('body')不是$(window)
  $('body').animate({scrollTop:'0'},500);
});
</script>

jQuery方法的优点是方便,而且动画效果比较流畅。

这里需要注意设置animate方法时使用的是jQuery封装的body对象而不是window对象,因为我们是要设置body的scrollTop属性。

总结

三个方法各有优劣,不过总体来讲,jQuery的方法更适合大多数场景。

以上所述是小编给大家介绍的jQuery中页面返回顶部的方法总结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
不用ajax实现点击文字即可编辑的方法
Dec 16 Javascript
Javascript 静态页面实现随机显示广告的办法
Nov 17 Javascript
jquery实现点击文字可编辑并修改保存至数据库
Apr 15 Javascript
IE8中使用javascript动态加载CSS的解决方法
Jun 17 Javascript
js创建表单元素并使用submit进行提交
Aug 14 Javascript
jQuery中get方法用法分析
Dec 07 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
Dec 12 Javascript
webpack优化的深入理解
Dec 10 Javascript
浅谈vue加载优化策略
Mar 19 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
May 16 Javascript
layUI实现三级导航菜单效果
Jul 26 Javascript
JavaScript实现淘宝商品图切换效果
Apr 29 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
Dec 30 #Javascript
JS实现全屏的四种写法
Dec 30 #Javascript
js设置文字颜色的方法示例
Dec 30 #Javascript
Node.js的Mongodb使用实例
Dec 30 #Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
Dec 30 #Javascript
原生JS实现图片左右轮播
Dec 30 #Javascript
零基础轻松学JavaScript闭包
Dec 30 #Javascript
You might like
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
php创建sprite
2014/02/11 PHP
老生常谈PHP面向对象之命令模式(必看篇)
2017/05/24 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
js 小数取整的函数
2010/05/10 Javascript
Ionic2系列之使用DeepLinker实现指定页面URL
2016/11/21 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
setTimeout学习小结
2017/02/08 Javascript
JS查找数组中重复元素的方法详解
2017/06/14 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
简单的编程0基础下Python入门指引
2015/04/01 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
python监控nginx端口和进程状态
2019/09/06 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
2020/06/30 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
2020/08/20 Python
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
出纳员岗位责任制
2014/02/11 职场文书
合作协议书范本
2014/04/17 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
远程教育培训心得体会
2016/01/09 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
python编程项目中线上问题排查与解决
2021/11/01 Python
Java 写一个简单的图书管理系统
2022/04/26 Java/Android