Я работаю над простым игровым движком на Javascript (без ума, я знаю). Скриншот из Opera: http://img406.imageshack.us/img406/5818/gamek.jpg
Хотя он выглядит как движок плиток, на самом деле он основан на объектах; каждая строка или столбец серых блоков представляет собой один
, расположенный относительно области просмотра (прямоугольник с красной рамкой). Область просмотра переполнена: скрыта, поэтому объекты за ее пределами не отображаются.
Однако Opera по-прежнему добавляет полные высоты этих объектов к общей высоте страницы, даже если большая ее часть обрезана. Это любопытно, потому что полоса прокрутки не отображается, а синий контур вокруг элемента не сдвигается вниз (и даже если я поместил его на элемент ). Но когда я нажимаю стрелку вниз, страница прокручивается вниз, пока нижняя часть этих объектов не окажется на экране, даже если они обрезаны.
Я могу сказать, что это так, потому что удаление этих объектов решает проблему, и когда я двигаюсь на юг в игре, страница прокручивается назад, так как объекты перемещаются назад и, таким образом, уменьшают высоту страницы.
Я использую Opera 10, но у меня была та же проблема с 9. Firefox прекрасно с этим справляется. Как бы я решить или обойти эту проблему? Никакая хитрость CSS, о которой я могу думать, не сделала этого, и вызов scroll (0,0) для каждого кадра еще хуже - страница переходит на «низ», а затем обратно наверх.