<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>runcode</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Author" content="Sheneyan" />
<script>
function s2top(){
var a = document.getElementsByTagName('a');
var l = a.length;
for (var i = 0 ; i < l ; i ++){
  var ai = a[i];
  if (/#header$/.test(ai.href)){
    ai.onclick = function(){
      var o = this;
      var ot = o.offsetTop;
      for (var t = 0 ; t < 20 ; t ++){
        setTimeout("scrollBy(0,-" + parseInt(ot / 20) + ")",t * 50 + 1);
      }
      return false;
    }
  }
}
}
</script>
<body onload="s2top()">
</body>
<p>
<script>
for (var i = 0 ; i < 1000 ; i ++)
  document.write(i+"<br>");
</script>
</p>
<a href="#header">go to 头</a>
</body>demo中的p中的script改大或改小看看。。。移动到top的时间始终是一定的,你也可以设置一个阀值,在页面高度到达这个阀值之前,移动的总时间是多少,当页面高度超过这个数时,移动的总时间反而以一定比例减小,自己试试看吧... http://www.corange.cn/archives/2008/05/1107.html