Je crée un site Web spécialement pour les appareils mobiles. Il y a une page en particulier qui est mieux visualisée en mode paysage.
Existe-t-il un moyen de détecter si l'utilisateur qui visite cette page la visualise en mode Portrait et, dans l'affirmative, d'afficher un message l'informant que la page est mieux visualisée en mode paysage? Si l'utilisateur le regarde déjà en mode paysage, aucun message n'apparaîtra.
Donc, fondamentalement, je veux que le site détecte l'orientation de la fenêtre d' affichage , si l'orientation est Portrait , puis affiche un message d'alerte informant l'utilisateur que cette page est mieux consultée en mode Paysage .
orientationchange
événement. Il montrera l'ancienne orientation au lieu de la nouvelle orientation. Cette réponse fonctionne bien combinée avec l'orientationchange
événement.Vous pouvez également utiliser
window.matchMedia
ce que j'utilise et préfère car il ressemble étroitement à la syntaxe CSS:Testé sur iPad 2.
la source
David Walsh a une meilleure approche et au point.
Au cours de ces modifications, la propriété window.orientation peut changer. Une valeur de 0 signifie une vue portrait, -90 signifie que l'appareil est tourné en paysage vers la droite et 90 signifie que l'appareil est tourné en paysage vers la gauche.
http://davidwalsh.name/orientation-change
la source
Vous pouvez utiliser CSS3:
la source
Il existe plusieurs façons de le faire, par exemple:
window.orientation
valeurinnerHeight
vsinnerWidth
Vous pouvez adapter l'une des méthodes ci-dessous.
Vérifiez si l'appareil est en mode portrait
Vérifiez si l'appareil est en mode paysage
Exemple d'utilisation
Comment détecter le changement d'orientation?
la source
Je pense que la solution la plus stable consiste à utiliser l'écran au lieu de la fenêtre, car cela peut être à la fois - paysage ou portrait si vous redimensionnez la fenêtre de votre navigateur sur un ordinateur de bureau.
la source
Afin d'appliquer tous ces excellents commentaires à mon codage quotidien, pour la continuité entre toutes mes applications, j'ai décidé d'utiliser les éléments suivants dans mon code mobile jquery et jquery.
la source
N'essayez pas les requêtes window.orientation fixes (0, 90 etc ne signifie pas portrait, paysage, etc.):
http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation/
Même sur iOS7 selon la façon dont vous entrez dans le navigateur 0 n'est pas toujours portrait
la source
Après quelques expérimentations, j'ai découvert que la rotation d'un appareil sensible à l'orientation déclenche toujours l'
resize
événement d' une fenêtre de navigateur . Donc, dans votre gestionnaire de redimensionnement, appelez simplement une fonction comme:la source
J'ai combiné deux solutions et cela fonctionne bien pour moi.
la source
Je ne suis pas d'accord avec la réponse la plus votée. Utiliser
screen
et nonwindow
Est-ce la bonne façon de le faire. Si vous calculez avec
window.height
, vous aurez des problèmes sur Android. Lorsque le clavier est ouvert, la fenêtre se rétrécit. Utilisez donc l'écran au lieu de la fenêtre.C'est
screen.orientation.type
une bonne réponse mais avec IE. https://caniuse.com/#search=screen.orientationla source
Obtenez l'orientation (à tout moment dans votre code js) via
Au
window.orientation
retour0
ou180
alors vous êtes en mode portrait , au retour90
ou270
alors vous êtes en mode paysage .la source
CCS uniquement
Dans certains cas, vous souhaiterez peut-être ajouter un petit morceau de code à recharger sur la page après que le visiteur a fait pivoter l'appareil, afin que le CSS soit rendu correctement:
la source
la source
la source
une autre alternative pour déterminer l'orientation, basée sur la comparaison de la largeur / hauteur:
Vous l'utilisez lors de l'événement "resize":
la source
iOS ne se met pas à jour
screen.width
etscreen.height
lorsque l'orientation change. Android ne se met pas à jourwindow.orientation
lorsqu'il change.Ma solution à ce problème:
Vous pouvez détecter ce changement d'orientation sur Android ainsi que sur iOS avec le code suivant:
Si l'
onorientationchange
événement n'est pas pris en charge, l'événement lié sera l'resize
événement.la source
Si vous avez les derniers navigateurs, cela
window.orientation
peut ne pas fonctionner. Dans ce cas, utilisez le code suivant pour obtenir l'angle -Ceci est encore une technologie expérimentale, vous pouvez vérifier la compatibilité du navigateur ici
la source
Merci à tobyodavies pour avoir ouvert la voie.
Pour obtenir un message d'alerte basé sur l'orientation de l'appareil mobile, vous devez implémenter le script suivant dans le
function setHeight() {
la source
Au lieu de 270, il peut être de -90 (moins 90).
la source
Cela développe une réponse précédente. La meilleure solution que j'ai trouvée consiste à créer un attribut CSS inoffensif qui n'apparaît que si une requête multimédia CSS3 est satisfaite, puis à effectuer le test JS pour cet attribut.
Ainsi, par exemple, dans le CSS, vous auriez:
Vous passez ensuite à JavaScript (j'utilise jQuery pour les funsies). Les déclarations de couleur peuvent être étranges, vous pouvez donc utiliser autre chose, mais c'est la méthode la plus infaillible que j'ai trouvée pour la tester. Vous pouvez ensuite simplement utiliser l'événement de redimensionnement pour reprendre la commutation. Mettez tout cela ensemble pour:
La meilleure partie de cela est qu'au moment où j'écris cette réponse, elle ne semble pas avoir d'effet sur les interfaces de bureau, car elles (généralement) ne (semblent) pas passer d'argument pour l'orientation de la page.
la source
Voici la meilleure méthode que j'ai trouvée, basée sur l'article de David Walsh ( Détecter le changement d'orientation sur les appareils mobiles )
Explication:
Window.matchMedia () est une méthode native qui vous permet de définir une règle de requête multimédia et de vérifier sa validité à tout moment.
Je trouve utile d'attacher un
onchange
écouteur sur la valeur de retour de cette méthode. Exemple:la source
J'ai utilisé pour Android Chrome "L'API d'orientation d'écran"
Pour consulter l'orientation actuelle, appelez console.log (screen.orientation.type) (et peut-être screen.orientation.angle).
Résultats: portrait-primaire | portrait-secondaire | paysage-primaire | paysage-secondaire
Ci-dessous mon code, j'espère qu'il vous sera utile:
la source
la source
L'objet fenêtre en JavaScript sur les appareils iOS possède une propriété d'orientation qui peut être utilisée pour déterminer la rotation de l'appareil. Ce qui suit montre les valeurs window.orientation pour les appareils iOS (par exemple iPhone, iPad, iPod) à différentes orientations.
Cette solution fonctionne également pour les appareils Android. J'ai vérifié dans le navigateur natif Android (navigateur Internet) et dans le navigateur Chrome, même dans les anciennes versions de celui-ci.
la source
C'est ce que j'utilise.
la mise en oeuvre
la source
la source
Il existe un moyen de détecter si l'utilisateur a basculé son appareil en mode portrait à l'aide
screen.orientation
Utilisez simplement le code ci-dessous:
Maintenant, il
onchange
sera déclenché chaque fois que l'utilisateur retournera l'appareil et une alerte s'affichera lorsque l'utilisateur utilisera le mode portrait.la source
Une chose à noter
window.orientation
est qu'il reviendraundefined
si vous n'êtes pas sur un appareil mobile. Donc, une bonne fonction pour vérifier l'orientation pourrait ressembler à ceci, oùx
estwindow.orientation
:Appelez-le ainsi:
la source
Ou vous pouvez simplement utiliser cela ..
la source