我正在使用 Javascript 开发一个简单的游戏引擎(我知道,这很疯狂。) Opera 的屏幕截图:http://img406.imageshack.us/img406/5818/gamek.jpg 虽然它看起来像一个 tile 引擎,但它实际上是基于对象的;灰色块的每一行或每一列都是一个单独的 <div>,相对于查看区域(带有红色边框的框)定位。查看区域有溢出:隐藏,因此对象不会显示在它之外。
然而,Opera 仍在将这些对象的全高添加到总页面高度中,即使其中大部分已被剪裁。这很奇怪,因为没有显示滚动条,并且 <html> 元素周围的蓝色轮廓不会向下移动(如果我把它放在 <body> 元素上也不会)。但是当我按下向下箭头时,页面会向下滚动,直到这些对象的底部出现在屏幕上,即使它们被剪裁了。我可以说是这样,因为移除这些对象可以解决问题,并且当我在游戏中向南移动时,页面会向上滚动,因为对象会向上移动,从而降低页面高度。
我正在使用 Opera 10,但在 9 中遇到了同样的问题。Firefox 处理得很好。我将如何解决或解决这个问题?我能想到的任何 CSS 技巧都没有做到这一点,而且每帧都调用 scroll(0,0) 更糟——页面跳到“底部”,然后又回到顶部。