免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2356 | 回复: 2
打印 上一主题 下一主题

JavaScript回到顶部的效果实现 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-19 23:28 |只看该作者 |倒序浏览
JavaScript回到顶部的效果实现






原理:首先获取滚动条到页面顶部的距离,然后上移一定的距离,再获取滚动条到页面顶部的距离,再上移一定的距离(小于上一次上移的距离),以此类推:



Html代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  2. <html>  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  5. <title>回到页面顶部</title>  
  6. <script type="text/javascript">  
  7.     /**   
  8.      * 回到页面顶部   
  9.      * @param acceleration 加速度   
  10.      * @param time 时间间隔 (毫秒)   
  11.      **/   
  12.     function goTop(acceleration, time) {   
  13.         accelerationacceleration = acceleration || 0.1;   
  14.         timetime = time || 16;   
  15.   
  16.         var x1 = 0;   
  17.         var y1 = 0;   
  18.         var x2 = 0;   
  19.         var y2 = 0;   
  20.         var x3 = 0;   
  21.         var y3 = 0;   
  22.   
  23.         if (document.documentElement) {   
  24.             x1 = document.documentElement.scrollLeft || 0;   
  25.             y1 = document.documentElement.scrollTop || 0;   
  26.         }   
  27.         if (document.body) {   
  28.             x2 = document.body.scrollLeft || 0;   
  29.             y2 = document.body.scrollTop || 0;   
  30.         }   
  31.         var x3 = window.scrollX || 0;   
  32.         var y3 = window.scrollY || 0;   
  33.   
  34.         // 滚动条到页面顶部的水平距离   
  35.         var x = Math.max(x1, Math.max(x2, x3));   
  36.         // 滚动条到页面顶部的垂直距离   
  37.         var y = Math.max(y1, Math.max(y2, y3));   
  38.   
  39.         // 滚动距离 = 目前距离 / 速度, 因为距离原来越小, 速度是大于 1 的数, 所以滚动距离会越来越小   
  40.         var speed = 1 + acceleration;   
  41.         window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));   
  42.   
  43.         // 如果距离不为零, 继续调用迭代本函数   
  44.         if (x > 0 || y > 0) {   
  45.             var invokeFunction = "goTop(" + acceleration + ", " + time + ")";   
  46.             window.setTimeout(invokeFunction, time);   
  47.         }   
  48.     }   
  49. </script>  
  50.   
  51. </head>  
  52. <body>  
  53. <div style="height: 1500px;"></div>  
  54. <a href="#" onclick="goTop();return false;">返回到顶部</a>  
  55. </body>  
  56. </html>  
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-01-19 23:28 |只看该作者
谢谢分享

论坛徽章:
0
3 [报告]
发表于 2012-01-25 23:10 |只看该作者
学习了。谢谢分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP