Включить реальное фиксированное позиционирование в браузерах Samsung Android

Браузер Android, начиная с версии 2.2, поддерживает фиксированное позиционирование, по крайней мере, при определенных обстоятельствах, например, когда масштабирование отключено. У меня есть простой HTML-файл без JS, но фиксированное позиционирование на трех телефонах Samsung, которые я пробовал, просто неверно. Вместо истинного фиксированного позиционирования, заголовок прокручивается вне поля зрения, а затем снова встает на место после прокрутки.

Этого не происходит в эмуляторе Android SDK для любой конфигурации, которую я тестировал (2.2, 2.3, 2.3 x86, 4.0.4). Это также не происходит при использовании WebView в приложении на телефонах Samsung: в таких случаях позиционирование работает так, как ожидалось.

Есть ли способ заставить Android Android «запаса» использовать реальное фиксированное позиционирование?

Я тестировал: 1. Samsung Galaxy 551, Android 2.2 2. Samsung Galaxy S, Android 2.3 3. Samsung Galaxy S II, Android 2.3

Образец кода:

<html> <head> <meta name="viewport" content="initial-scale=1.0,maximum-scale=1.0,user-scalable=no,width=device-width,height=device-height"> <style> h1 { position: fixed; top: 0; left: 0; height: 32px; background-color: #CDCDCD; color: black; font-size: 32px; line-height: 32px; padding: 2px; width: 100%; margin: 0;} p { margin-top: 36px; } </style> </head> <body> <h1>Header</h1> <p>Long text goes here</p> </body> </html> 

Ожидаемое поведение заключается в том, что серый заголовок заполняет верхнюю часть экрана и остается вне зависимости от того, сколько вы прокручиваете. В браузерах Samsung Android он, кажется, прокручивается вне поля зрения, а затем встает на место после прокрутки, как если бы фиксированное позиционирование моделируется с помощью Javascript, а это не так.

Редактировать Судя по комментариям и «ответам», кажется, что, возможно, я не совсем понял, что мне нужно. Я ищу метатег или css rule / hack или javascript toggle, который отключает фиксированное позиционирование Samsung и включает работу фиксированного позиционирования браузера Android. Я не ищу Javascript-решение, которое добавляет разбитое фиксированное позиционирование в браузер, который не имеет никакой поддержки; Фиксированное позиционирование Samsung делает это уже, это выглядит просто глупо.

Возможно, вы могли бы рассмотреть другой подход, который не требует фиксированного позиционирования …

Добавьте прокрутку в элемент абзаца вместо элемента body (по умолчанию). Затем вы можете расположить элемент абзаца только под заголовком. Это гарантирует, что заголовок всегда отображается в верхней части страницы, но позволяет прокручивать текст в абзаце.

 h1 { height: 20px; } p { position: absolute; top: 20px; left: 0px; right: 0px; bottom: 0px; overflow-y: auto; } 

Я думаю, лучший способ для браузера android 2.2 реализовать javascript.

Вы можете найти дополнительную информацию по этой ссылке. Речь идет о фиксированном позиционировании во всех мобильных браузерах.

http://bradfrostweb.com/blog/mobile/fixed-position/

В своем комментарии к статье Брэда Фроста Мэтью Холлоуэй предлагает решение в соответствии с ответом Аниты Фоли, но с полифонией для переполнения: auto, где не поддерживается. Проверьте это здесь:

http://bradfrostweb.com/blog/mobile/fixed-position/

Это не сломанный браузер Android от Samsung, это Android 2.2, у которого есть сломанная поддержка. В общем, как вы знаете, позиция: фиксированная была и в некоторых случаях все еще довольно нарушена во многих мобильных устройствах / системах.

Чтобы ответить на ваш вопрос, нет «переключателя или метатега», который «включит работу фиксированного позиционирования браузера Android». Если браузер не поддерживает что-то, тогда нет «переключения», чтобы «переключить» его. Это не особенность.

В противном случае вы можете использовать http://cubiq.org/iscroll-4, который имитирует.

(Изменить: некоторые факты)

  1. Согласно http://caniuse.com/#search=position:fixed Android 2.2 и Android 2.3 имеют PARTIAL и не полную поддержку позиции: исправлено. (Частичная поддержка кажется багги-поддержкой)
  2. Симулятор Android не является и никогда не будет идентичен базовому браузеру Android, так как IETester, например, не совпадает с IE native (есть различия)
  3. Motorola ATRIX 4G НЕ имеет Android 2.2, но Android 2.3 ( http://www.motorola.com/us/consumers/MOTOROLA-ATRIX%E2%84%A2-4G/72112,en_US,pd.html?selectedTab=tab- 2 & cgid = мобильные телефоны # )

Вы предполагаете, что SAMSUNG вводит проприетарный хак или мод, который нарушает действующую поддержку позиции, зафиксированной в браузере Android. Это кажется крайне маловероятным, независимо от 3 пунктов выше.

Ответ на самом деле прост: есть частичная (багги) поддержка, и единственным решением является использование библиотеки javascript, которая заменяет или «исправляет» отверстие.