六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 191|回复: 0

JavaScript回到顶部的效果实现

[复制链接]

升级  62.67%

120

主题

120

主题

120

主题

举人

Rank: 3Rank: 3

积分
388
 楼主| 发表于 2013-1-29 08:49:08 | 显示全部楼层 |阅读模式
转自网路
原理:首先获取滚动条到页面顶部的距离,然后上移一定的距离,再获取滚动条到页面顶部的距离,再上移一定的距离(小于上一次上移的距离),以此类推:
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>回到页面顶部</title><script type="text/javascript">/** * 回到页面顶部 * @param acceleration 加速度 * @param time 时间间隔 (毫秒) **/function goTop(acceleration, time) {acceleration = acceleration || 0.1;time = time || 16;var x1 = 0;var y1 = 0;var x2 = 0;var y2 = 0;var x3 = 0;var y3 = 0;if (document.documentElement) {x1 = document.documentElement.scrollLeft || 0;y1 = document.documentElement.scrollTop || 0;}if (document.body) {x2 = document.body.scrollLeft || 0;y2 = document.body.scrollTop || 0;}var x3 = window.scrollX || 0;var y3 = window.scrollY || 0;// 滚动条到页面顶部的水平距离var x = Math.max(x1, Math.max(x2, x3));// 滚动条到页面顶部的垂直距离var y = Math.max(y1, Math.max(y2, y3));// 滚动距离 = 目前距离 / 速度, 因为距离原来越小, 速度是大于 1 的数, 所以滚动距离会越来越小var speed = 1 + acceleration;window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));// 如果距离不为零, 继续调用迭代本函数if (x > 0 || y > 0) {var invokeFunction = "goTop(" + acceleration + ", " + time + ")";window.setTimeout(invokeFunction, time);}}</script></head><body><div style="height: 1500px;"></div><a href="#" >返回到顶部</a></body></html>
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表