Je travaille avec plusieurs tablettes, Android et autres. et iOS . Actuellement, j'ai les variations de résolution suivantes pour toutes les tablettes.
- 1280 x 800
- 1280 x 768
-
1024 x 768 (iPad évidemment)- L'iPad n'a pas ce problème
La façon la plus simple d'appliquer un style basé sur l'orientation du dispositif est d'utiliser l'orientation de la requête média en utilisant la syntaxe suivante.
@media all and (orientation:portrait)
{
/* My portrait based CSS here */
}
@media all and (orientation:landscape)
{
/* My landscape based CSS here */
}
Cela fonctionne parfaitement bien sur toutes les tablettes. MAIS Le problème est que, lorsque l'appareil est en mode portrait et que l'utilisateur tape sur un champ de saisie (par exemple, une recherche), le clavier virtuel s'affiche, ce qui réduit la zone visible de la page Web et la force à s'afficher en mode paysage. Sur les tablettes Android, cela dépend de la hauteur du clavier. En fin de compte, la page Web semble cassée. Par conséquent, je ne peux pas utiliser la requête de média d'orientation de CSS3 pour appliquer des styles basés sur l'orientation (à moins qu'il existe une meilleure requête de média pour cibler l'orientation). Voici une astuce http://jsfiddle.net/hossain/S5nYP/5/ qui émule ceci - pour les tests de dispositifs, utilisez la page de test complète. http://jsfiddle.net/S5nYP/embedded/result/
Voici une capture d'écran du comportement tirée de la page de démonstration.
Je suis ouvert à une solution basée sur JavaScript si la solution native basée sur CSS ne fonctionne pas.
J'ai trouvé un extrait sur http://davidbcalhoun.com/2010/dealing-with-device-orientation qui suggère d'ajouter la classe et de cibler en fonction de cela. Par exemple :
<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; }
Qu'est-ce que vous en pensez ? Avez-vous une meilleure solution ?
0 votes
Je viens de le découvrir, iPad hace PAS ont ce problème. SEUL le système d'exploitation Android (tablettes Honeycomb) et les mobiles ont ce problème.
0 votes
J'ai rencontré un problème similaire avec mon site Web mobile. Après avoir testé plusieurs appareils Android, il ne semble pas être limité à un système d'exploitation spécifique ou à un appareil mobile/tablette. Il semble que ce soit principalement un problème avec les appareils Motorola et Samsung. Je n'ai pas été en mesure de reproduire le problème sur notre téléphone HTC.
1 votes
Ce problème se pose principalement avec les appareils Android, mobiles/tablettes - la seule façon de le reproduire est d'installer un clavier personnalisé qui a une grande hauteur, de sorte que, lorsque le clavier est affiché, la hauteur disponible pour le webview est inférieure à la largeur disponible. Ce n'est qu'à ce moment-là que le webview déclenche le changement d'orientation. Par exemple, dans la capture d'écran, si je peux désactiver la couche de suggestion au-dessus du clavier, alors ce problème ne se posera pas, car la hauteur du webview sera supérieure à la largeur. Mais, de toute façon, je n'ai pas encore trouvé de solution élégante et efficace.
1 votes
Je viens de me rendre compte que la WebApp plein écran d'IOS 7.0.0 a également ce comportement.
0 votes
C'est triste. Je n'ai pas été en mesure de résoudre le problème efficacement, c'est pourquoi je l'ai marqué comme
known limitation
.1 votes
Voir cette réponse pour la solution