Opera将页面滚动到不可见元素

时间:2009-09-12 01:38:24

标签: html css height overflow opera

我正在使用Javascript中的简单游戏引擎(疯狂,我知道。)来自Opera的屏幕截图: http://img406.imageshack.us/img406/5818/gamek.jpg 虽然它看起来像一个tile引擎,但它实际上是基于对象的;灰色块的每行或每列是单个< div>,相对于观看区域(具有红色边框的框)定位。观察区域有溢出:隐藏,因此对象不会显示在外面。

然而,Opera仍然将这些对象的完整高度添加到总页面高度,即使它的大部分被剪裁。这很奇怪,因为没有滚动条显示,并且< html>周围的蓝色轮廓element不会向下移动(也不会将它放在< body>元素上)。但是当我按下向下箭头时,页面向下滚动,直到这些对象的底部出现在屏幕上,即使它们被剪裁了。 我可以说是这种情况,因为移除这些对象可以解决问题,当我在游戏中向南移动时,页面会向上滚动,因为对象会向上移动,从而降低页面高度。

我正在使用Opera 10,但遇到了同样的问题9. Firefox处理它就好了。我如何解决或解决这个问题?我无法想到的CSS技巧已经完成了,并且每帧调用scroll(0,0)更糟糕 - 页面跳转到“底部”,然后回到顶部。

2 个答案:

答案 0 :(得分:0)

这个问题是否也出现在safari中?如果是这样,它可能是一个特定于WebKit的故障。

或者为该元素指定max-height可能会阻止该对象调整浏览器窗口的大小。

源代码也很好=)

答案 1 :(得分:0)

这是Opera中的一个已知错误,您可以滚动到溢出的内容:隐藏。

现在,如果您使用JavaScript处理 keypress 事件并调用event.preventDefault()按箭头键,则会阻止滚动。 (无法阻止keydown事件的默认操作,必须是按键)。这有帮助吗?