Я працюю з кількома планшетними пристроями - обидва Android та iOS. На даний момент у мене є наступні варіації роздільної здатності для всіх планшетів.
- 1280 x 800
- 1280 x 768
1024 x 768 (iPad, очевидно)- iPad не має цієї проблеми
Найпростіший спосіб застосувати стиль, орієнтований на пристрій, - використовувати орієнтацію медіа-запиту, використовуючи наступний синтаксис.
@media all and (orientation:portrait)
{
/* My portrait based CSS here */
}
@media all and (orientation:landscape)
{
/* My landscape based CSS here */
}
Це чудово працює на всіх планшетних пристроях. АЛЕ проблема полягає в тому, що коли пристрій перебуває в портретному режимі і користувач натискає на будь-яке поле введення (наприклад, пошук), з’являється м’яка клавіатура - що зменшує видиму область веб-сторінки та змушує її відображатись у css на основі альбому. На планшетних пристроях Android це залежить від висоти клавіатури. Отже, зрештою веб-сторінка виглядає зламаною. Тому я не можу використовувати медіа-запит орієнтації CSS3 для застосування стилів на основі орієнтації (якщо немає кращого медіа-запиту для цільової орієнтації). Ось скрипка http://jsfiddle.net/hossain/S5nYP/5/, яка наслідує це - для тестування пристрою використовуйте повну тестову сторінку - http://jsfiddle.net/S5nYP/embedded/result/
Ось скріншот поведінки, зроблений із демонстраційної сторінки.
Отже, чи існує якась альтернатива вирішенню цієї проблеми, я відкритий для рішення на основі JavaScript, якщо власне рішення на основі CSS не працює.
Я знайшов фрагмент на http://davidbcalhoun.com/2010/dealing-with-device-orientation, який пропонує додати клас і ціль на основі цього. Наприклад:
<html class="landscape">
<body>
<h1 class="landscape-only">Element Heading - Landscape</h1>
<h1 class="portrait-only">Element Heading - Portrait</h1>
<!-- .... more... ->
# CSS
.landscape .landscape-only { display:block; }
.landspace .portrait-only { display:none; }
.portrait .portrait-only { display:block; }
.portrait .landscape-only { display:none; }
Що ви думаєте з цього приводу? У вас є краще рішення?