日期:2014-05-16  浏览次数:20487 次

求大侠指点js区随滚动条动算法
本人小菜,这边的算法纠结了好久,希望大侠可以解释的更详细点。
function moveTips()
{
  var tt=50; 
  if (window.innerHeight) 
  {
  pos = window.pageYOffset  

  }else if (document.documentElement && document.documentElement.scrollTop) {
  pos = document.documentElement.scrollTop  

  }else if (document.body) {
  pos = document.body.scrollTop;  
  }
   
 
pos=pos-tips.offsetTop+theTop;
//滚动条滚动到的位置加上tips的层偏移高度
//(被卷去的高度减去tips的高度加上上边距?想不通)

 
pos=tips.offsetTop+pos/10;//(跟着没想通)


  if (pos < theTop){
  pos = theTop;
   
  }
  //(还是没想通)
  if (pos != old) { 
  tips.style.top = pos+"px";
  tt=10;

   
   
  }

  old = pos;
  setTimeout(moveTips,tt);
}


三个没想通,望大神指点

------解决方案--------------------
先看这例子:http://topic.csdn.net/u/20120911/19/90ac6651-f638-4fa7-b226-20b826816a1b.html?42814
黑框表示dome,也就是可视区域,当dome1的高度大于dome时才可以做滚动,否则会出错。然后dome1复制一个dome2到屁股里。原理就是dome向上滚动【scrollTop】当滚动到高度与dome1高度一样时,dome1又返回开始位置,就这样反反复复。而dome.height=dome2.soffsetTop=dome1.offsetHeight 所以用 if(dome2.offsetTop-dome.scrollTop<=0)表示dome1已经刚刚完全滚动到上面不可视区域,所以马上执行dome.scrollTop=0【dome.scrollTop-=dome1.offsetHeight,其实就是dome.scrollTop=0】,如果没达到就dome.scrollTop=dome.scrollTop+1【简写成dome.scrollTop++】一点点往上滚...