求大侠指点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++】一点点往上滚...