Четыре вопроса по мобильной верстке

Рейтинг: 0Ответов: 1Опубликовано: 17.03.2015

Привет. Возникли четыре вопроса по верстке для мобильных устройств.

1. На стареньком андроиде с ОС версии 4.0.4 (Sony Ericsson mk16i, стандартный браузер android) наблюдается такой эффект при переворачивании устройства в landscape-положение:

Imgur

верхний навбар с position: fixed превращается в странную белую полоску:

Imgur

Что это такое, откуда возникает, и как с этим бороться?

2. iphone 4 на подобный поворот никак не реагирует, оставляя навбару ту же ширину, что и была. Я справился с этим багом с помощью js, но есть ли какой-то общепринятый подход к подобным вещам?

3. При достаточном разрешении показывается вертикальное боковое меню, также закрепленное с помощью position: fixed. при увеличении масштаба оно также масштабируется и закрывает собой полэкрана, оставаясь закрепленным на месте. Есть ли способ разместить его относительно window, а не viewport, не прибегая к position: absolute или js? Бонусом - какую библиотеку сейчас модно использовать для обнаружения планшетов/мобильников на клиенте?

4. При заполнении формы устройство автоматически увеличивает масштаб для облегчения заполнения этой формы. Можно ли по окончанию заполнения (нажатию enter, ok или аналога) каким-либо образом задать устройству предшествующий масштаб(т.е. есть ли у мобильных устройств интерфейс для работы со scale и есть ли подходящее событие завершения редактирования формы?).

От бутстрапа было решено отказаться в силу некоторых причин, и возвращаться к нему просто нет времени.

Ответы

▲ 2Принят

1) Вопрос риторический, без кода и устройства ответить, думаю, нереально.

2) Должен подчиняться css media query landscape и portrait 100% проверено

3) Я использую http://matthewhudson.me/projects/device.js/ совместно с:

@media screen and (orientation: landscape) { } 
@media screen and (orientation: portrait) { }

Также касательно размещения объекта относительно window: обычно делаю .wrapper, который position: fixed; width: 100%; height: 100%; со свойством -webkit-overflow-scrolling: touch;, и уже внутри него "лепится" сайт.

4) Нет, только запретить масштабирование полностью: <meta name="viewport" content="user-scalable=no">

P.S. Не претендую на идеальный ответ, не гонюсь за рейтингом, просто делюсь с автором своими наработками.