关于js的一个不间断滚动代码使用问题

JavaScript011

关于js的一个不间断滚动代码使用问题,第1张

//保存想要滚动的容器

var scrollingBox

var scrollingInterval

//用于记录是否“滚到头”过一次

var reachedBottom=false

//记录第一次滚到头时候的scrollTop

var bottom

function initScrolling()

{

scrollingBox = document.getElementById("prodiv")

//样式设置,与滚动基本无关

scrollingBox.style.height = "600px"

scrollingBox.style.overflow = "hidden"

//滚动

scrollingInterval = setInterval("scrolling()",50)

//鼠标划过停止滚动效果

scrollingBox.onmouseover = over

//鼠标划出回复滚动效果

scrollingBox.onmouseout = out

}

//滚动效果

function scrolling()

{

//开始滚动,origin是原来scrollTop

var origin = scrollingBox.scrollTop++

//如果到头了

if(origin == scrollingBox.scrollTop)

{

//如果是第一次到头

if(!reachedBottom)

{

scrollingBox.innerHTML+=scrollingBox.innerHTML

reachedBottom=true

bottom=origin

}

else

{

//已经到头过,只需回复头接尾的效果

scrollingBox.scrollTop=bottom

}

}

}

function over()

{

clearInterval(scrollingInterval)

}

function out()

{

scrollingInterval = setInterval("scrolling()",50)

}

以垂直滚动为例:一组图片 控制它的滚动条进行滚动 且此时对这组图片进行复制并添加进原图片组中,现在就有两组图片了。你可以想象一下,现在滚动条继续滚动,原来那组图片最后一张图片已经滚至顶端且消失,复制的那组图片的第一张跟在原图最后一张图片后出现,此时你就能感觉到无缝滚动了,而就在此刻我们将滚动条高度设置为0(因为速度很快,所以不会出现停顿感),你感觉图片就这样一直不停的滚动下去了。关键点在于元素的复制、添加,以及滚动条距离的获取和修改。网上代码很多,都是基于这类构思

我的测试结果是这样的:

demo2.innerHTML=demo1.innerHTML

//demo1.offsetHeight=783 demo2.offsetHeight=773

//demo2.offsetTop=792 scrollTop=752时停止

function Marquee(){

if(demo2.offsetTop-demo.scrollTop<=40)

当它停止的时候,还差40,所以,改成<=40 就可以了。

当scrollTop=752时,它是停止,是因为滚动条已经到底了,不能再滚动了,所以停止了。

但是,

demo1.offsetHeight=783

demo2.offsetHeight=773

这两个数据为什么不一样,我就不太理解了。楼主如果知道为什么的话,麻烦告诉我一下。

(噢,对了,差点忘了,因为楼主原引用的图片,我这里无法显示,于是,我就换了一张图片,但如果是原图片的话,上面三个数据也应该会是不一样的!楼主可以测试一下。)