本人小菜,这边的算法纠结了好久,希望大侠可以解释的更详细点。
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);
}
三个没想通,望大神指点

解决方案 »

  1.   

    先看这例子: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++】一点点往上滚...