Браузер 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.
Вы можете найти дополнительную информацию по этой ссылке. Речь идет о фиксированном позиционировании во всех мобильных браузерах.
В своем комментарии к статье Брэда Фроста Мэтью Холлоуэй предлагает решение в соответствии с ответом Аниты Фоли, но с полифонией для переполнения: auto, где не поддерживается. Проверьте это здесь:
Это не сломанный браузер Android от Samsung, это Android 2.2, у которого есть сломанная поддержка. В общем, как вы знаете, позиция: фиксированная была и в некоторых случаях все еще довольно нарушена во многих мобильных устройствах / системах.
Чтобы ответить на ваш вопрос, нет «переключателя или метатега», который «включит работу фиксированного позиционирования браузера Android». Если браузер не поддерживает что-то, тогда нет «переключения», чтобы «переключить» его. Это не особенность.
В противном случае вы можете использовать http://cubiq.org/iscroll-4, который имитирует.
(Изменить: некоторые факты)
Вы предполагаете, что SAMSUNG вводит проприетарный хак или мод, который нарушает действующую поддержку позиции, зафиксированной в браузере Android. Это кажется крайне маловероятным, независимо от 3 пунктов выше.
Ответ на самом деле прост: есть частичная (багги) поддержка, и единственным решением является использование библиотеки javascript, которая заменяет или «исправляет» отверстие.