К сожалению, вам лучше всего использовать absolute
позиционирование для ваших fixed
элементов при работе с IOS. Да, IOS5 утверждает, что поддерживает позиционирование fixed
, но все это падает, когда у вас есть интерактивные элементы управления в этом фиксированном элементе.
У меня была такая же проблема с окном поиска на моем switchitoff.net сайте. В IOS5 фиксированный заголовок будет перемещаться вниз по странице, если окно поиска получит фокус при прокрутке страницы. Я пробовал различные обходные пути, и тот, который у меня сейчас есть, это <div>
, который находится над окном поиска. При нажатии на <div>
происходит следующее:
- Страница прокручивается вверх
- Заголовок
fixed
изменен на absolute
-
<div>
, скрывающий окно поиска, скрыт
- Поиск
<input>
сфокусирован
Приведенные выше шаги отменяются, когда окно поиска теряет фокус. Это решение предотвращает переход заголовка вниз по странице при щелчке окна поиска, но для более простого сайта вам, вероятно, лучше использовать абсолютное позиционирование.
Есть еще одна хитрая проблема с IOS5 и фиксированным позиционированием. Если в области fixed
есть элементы, по которым можно нажимать, а за ними прокручиваются элементы body
, это может нарушить сенсорные события.
Например, на switchitoff.net кнопки на фиксированном заголовке стали неактивными, когда за ними прокручивались интерактивные элементы. touchstart
даже не было запущено, когда эти кнопки были нажаты. К счастью, onClick
, похоже, все еще работает, хотя это всегда последнее средство для IOS из-за задержки.
Наконец, обратите внимание, как (в IOS5) вы можете нажать на фиксированный заголовок и прокрутить страницу. Я знаю, что это подражает тому, как вы можете использовать колесо прокрутки над фиксированным заголовком в обычном браузере, но наверняка эта парадигма не имеет смысла для сенсорного интерфейса?
Надеюсь, Apple продолжит совершенствовать обработку фиксированных элементов, но в то же время проще придерживаться позиционирования absolute
, если у вас есть что-то интерактивное в вашей фиксированной области. Это или вернуться к IOS4, когда все было намного проще!