Estoy construyendo un sitio web específicamente para dispositivos móviles. Hay una página en particular que se ve mejor en modo horizontal.
¿Hay alguna manera de detectar si el usuario que visita esa página la está viendo en modo vertical y, de ser así, muestra un mensaje que le informa que la página se ve mejor en modo horizontal? Si el usuario ya lo está viendo en modo horizontal, no aparecerá ningún mensaje.
Básicamente, quiero que el sitio detecte la orientación de la ventana gráfica, si la orientación es Vertical , luego muestre un mensaje de alerta que avise al usuario que esta página se ve mejor en modo horizontal .
orientationchange
evento. Mostrará la orientación anterior en lugar de la nueva orientación. Esta respuesta funciona bien combinada con elorientationchange
evento.También puede usar
window.matchMedia
, que yo uso y prefiero ya que se parece mucho a la sintaxis CSS:Probado en iPad 2.
fuente
David Walsh tiene un enfoque mejor y directo.
Durante estos cambios, la propiedad window.orientation puede cambiar. Un valor de 0 significa vista vertical, -90 significa que el dispositivo se gira horizontalmente a la derecha y 90 significa que el dispositivo se gira horizontalmente a la izquierda.
http://davidwalsh.name/orientation-change
fuente
Puedes usar CSS3:
fuente
Hay algunas formas de hacerlo, por ejemplo:
window.orientation
valorinnerHeight
vs.innerWidth
Puede adaptar uno de los siguientes métodos.
Compruebe si el dispositivo está en modo vertical
Compruebe si el dispositivo está en modo horizontal
Ejemplo de uso
¿Cómo detecto el cambio de orientación?
fuente
Creo que la solución más estable es usar la pantalla en lugar de la ventana, porque podría ser tanto horizontal como vertical si cambia el tamaño de la ventana de su navegador en la computadora de escritorio.
fuente
Para poder aplicar todos estos excelentes comentarios a mi codificación diaria, para la continuidad entre todas mis aplicaciones, he decidido usar lo siguiente en mi código móvil jquery y jquery.
fuente
No intente la ventana fija. Las consultas de orientación (0, 90, etc. no significa vertical, horizontal, etc.):
http://www.matthewgifford.com/blog/2011/12/22/a-misconception-about-window-orientation/
Incluso en iOS7, dependiendo de cómo ingrese al navegador, 0 no siempre es vertical
fuente
Después de experimentar un poco, descubrí que girar un dispositivo con orientación orientada siempre activará el
resize
evento de una ventana del navegador . Entonces, en su controlador de cambio de tamaño, simplemente llame a una función como:fuente
Combiné dos soluciones y funciona bien para mí.
fuente
No estoy de acuerdo con la respuesta más votada. Uso
screen
y nowindow
Es la forma correcta de hacerlo. Si calculas con
window.height
, tendrá problemas en Android. Cuando el teclado está abierto, la ventana se encoge. Así que usa la pantalla en lugar de la ventana.La
screen.orientation.type
es una buena respuesta pero con IE. https://caniuse.com/#search=screen.orientationfuente
Obtenga la orientación (en cualquier momento en su código js) a través de
Cuando
window.orientation
regrese0
o180
esté en modo vertical , cuando regrese90
o270
esté en modo horizontal .fuente
Solo CCS
En algunos casos, es posible que desee agregar un pequeño fragmento de código para volver a cargar en la página después de que el visitante giró el dispositivo, para que el CSS se procese correctamente:
fuente
fuente
fuente
Otra alternativa para determinar la orientación, basada en la comparación del ancho / alto:
Lo usas en el evento "redimensionar":
fuente
iOS no se actualiza
screen.width
yscreen.height
cuando cambia la orientación. Android no se actualizawindow.orientation
cuando cambia.Mi solución a este problema:
Puede detectar este cambio de orientación en Android e iOS con el siguiente código:
Si el
onorientationchange
evento no es compatible, el evento vinculado será elresize
evento.fuente
Si tiene los navegadores más recientes, es
window.orientation
posible que no funcionen. En ese caso, use el siguiente código para obtener el ángulo:Esto sigue siendo una tecnología experimental, puedes verificar la compatibilidad del navegador aquí
fuente
Gracias a tobyodavies por guiar el camino.
Para lograr un mensaje de alerta basado en la orientación del dispositivo móvil, debe implementar el siguiente script dentro del
function setHeight() {
fuente
En lugar de 270, puede ser -90 (menos 90).
fuente
Esto se expande en una respuesta anterior. La mejor solución que he encontrado es hacer un atributo CSS inocuo que solo aparece si se cumple una consulta de medios CSS3, y luego tener la prueba JS para ese atributo.
Entonces, por ejemplo, en el CSS tendrías:
Luego vas a JavaScript (estoy usando jQuery para funsies). Las declaraciones de color pueden ser extrañas, por lo que es posible que desee usar otra cosa, pero este es el método más infalible que he encontrado para probarlo. Luego puede usar el evento de cambio de tamaño para retomar el cambio. Ponlo todo junto para:
La mejor parte de esto es que, al escribir esta respuesta, no parece tener ningún efecto en las interfaces de escritorio, ya que (generalmente) no (parecen) pasar ningún argumento de orientación a la página.
fuente
Este es el mejor método que encontré, basado en el artículo de David Walsh ( Detectar cambio de orientación en dispositivos móviles )
Explicación:
Window.matchMedia () es un método nativo que le permite definir una regla de consulta de medios y verificar su validez en cualquier momento.
Me resulta útil adjuntar un
onchange
oyente en el valor de retorno de este método. Ejemplo:fuente
Solía para Android Chrome "La API de orientación de pantalla"
Para ver la orientación actual, llame a console.log (screen.orientation.type) (y tal vez screen.orientation.angle).
Resultados: retrato-primaria | retrato secundario | paisaje primario | paisaje secundario
A continuación se muestra mi código, espero que sea útil:
fuente
fuente
El objeto de ventana en JavaScript en dispositivos iOS tiene una propiedad de orientación que se puede utilizar para determinar la rotación del dispositivo. A continuación se muestran los valores de window.orientation para dispositivos iOS (por ejemplo, iPhone, iPad, iPod) en diferentes orientaciones.
Esta solución también funciona para dispositivos Android. Revisé el navegador nativo de Android (navegador de Internet) y el navegador Chrome, incluso en las versiones anteriores.
fuente
Esto es lo que yo uso.
Implementación
fuente
fuente
Hay una manera de detectar si el usuario volcó su dispositivo al modo vertical
screen.orientation
Solo usa el siguiente código:
Ahora,
onchange
será despedido cuando un usuario voltee el dispositivo y aparecerá una alerta cuando el usuario use el modo vertical.fuente
Una cosa a tener en cuenta
window.orientation
es que volveráundefined
si no está en un dispositivo móvil. Entonces, una buena función para verificar la orientación podría verse así, dondex
eswindow.orientation
:Llámalo así:
fuente
O podrías usar esto ...
fuente