Opera Mobile неправильно вычисляет позицию: исправлено

#html #css-position #opera-mobile

#HTML #css-position #opera-mobile

Вопрос:

У меня интересная проблема с позицией: исправлена в Opera Mobile 11:

Тестовая страница:http://dl.dropbox.com/u/841468/testcase/opera/fixed.html

Красный <div> должен оставаться фиксированным сверху. Если я прокручиваю страницу вниз, элемент немного смещается от верхнего края окна просмотра (ровно 93 пикселя в пикселях устройства); но если я прокручиваю вверх, элемент возвращается в правильное положение.

(Скриншот на HTC Desire):

Скриншот на HTC Desire

Мои выводы:

  • Изменение уровня масштабирования не помогло и не изменило положение элемента с верхнего края.
  • Это корректно работает в эмуляторах Opera Mobile (как 10.1b, так и 11)
  • Установка или удаление свойств «сверху» / «слева» не помогло
  • Присвоение свойствам «z-index» или «display» некоторого значения не исправило это
  • Это показывает такое поведение, даже когда я перемещаю окно просмотра с window.scrollTo(x, y)
  • Установка «zoom» на «reset» не сработала
  • События мыши проходят через этот элемент к элементу под ним (если он находится в этом неправильном положении)
  • Попытка взлома IE не сработала 🙂

Спасибо

Комментарии:

1. Информация: Также нарушена в Opera Mobile 11.1

Ответ №1:

Эта проблема была исправлена внутри, и версия Opera Mobile 11.5 должна выйти с корректной работой.

Ответ №2:

К сожалению, для этого нет исправления, похоже, это известная ошибка в Opera, и они работают над ней. Я исправил эту ошибку, используя небольшой CSS-хак, специфичный для Opera, и тем временем поместив div в абсолютное положение:

нет индекса:-o-prefocus, div {позиция: абсолютная; }

Комментарии:

1. Я только что прошел проверку в Opera 11.5 и могу подтвердить, что это исправлено. Теперь он ведет себя как в Firefox Mobile, то есть фиксированная позиция остается в начальной позиции, прежде чем снова появиться на месте… Я полагаю, это вызвано проблемами с производительностью, но это не элегантное решение: (

Ответ №3:

Это известная проблема в Opera, и мы активно работаем над исправлением. Хотя это сложная проблема, связанная с отображением при рендеринге.