如下一段页面内容:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML>
<head>
<STYLE type=text/css>
#a
{
MARGIN: 0px auto; OVERFLOW: scroll; WIDTH: 734px; HEIGHT: 150px; padding:0; border:0; background-color:blue;
}
#a img
{
WIDTH: 79px;HEIGHT: 125px; margin:0; padding:0; border:0;background-color:yellow;
}
</STYLE></HEAD>
<BODY>
<DIV id=a>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD><IMG alt="3.1415926" src=""></TD></TR></TBODY></TABLE></DIV>
</BODY></HTML>实现无间滚动过程中,设置一个对象b,复制要a的内容若干份,然后,设置一个计时器,执行动作里边,对b的scrollLeft进行判断,如果小于79,就scrollLeft加一;如果等于,就归0,如果大于,就等于scrollLeft-79。能提供的信息如下:1:如果b里边复制10份a的时候,a的格式的overview设置为scroll,是可以正常滚动的,但是设置为hidden却不行!
2:虽然只复制10份,但是b的scrollWidth居然是812,而不是79x10.
3:如果a的格式的overview设置为hidden,b.scrollLeft到了78的时候,也就是(812-734)的时候,scrollLeft再经过加一计算,仍然等于78,而不是79!这里的734就是a的宽度。
4:如果复制11份,或者aa的宽度为80,可以正常滚动。问题:1:为什么如果b里边复制10份a的时候,a的格式的overview设置为scroll,是可以正常滚动的,但是设置为hidden却不行?2:为什么如果a的格式的overview设置为hidden,b.scrollLeft到了78的时候,也就是(812-734)的时候,scrollLeft再经过加一计算,仍然等于78,而不是79!这里的734就是a的宽度?3:或者说,如果a不可动,那么如何调解b里边a的份数或者aa的宽度才可以正常滚动?给一个详细的解释。

解决方案 »

  1.   

    进一步研究发现,似乎跟滚动条的宽度有关系,在overflow=hidden的时候,scrollleft最大可以取值到78,第一个图片还没有显示完,不能直接把滚动条回到原点,却又不能继续右移,卡住了。但是overflow=scroll的时候,最大取值为79,这时候一张图片显示完毕,就可以把滚动条设置到原点了,也就可以滚动了。
      

  2.   

    解决了:
    1:两种设置下,纵向滚动条会消失或者显示,进而引起滚动条最大取值的变化。如果滚动条最大取值大于或者等于一个aa的宽度,那么正常运行,否则,会卡。
    2:表格中如果设置了“border-collapse: collapse;”,就变成790了。
    3:不管调节那个,只要满足“滚动条最大取值大于一个aa的宽度”就可以了。