¿Puedo activar un evento de CSS en Safari móvil en el cambio de orientación iPhone?
-
22-09-2019 - |
Pregunta
Estoy tratando de encontrar la manera de cambiar una página Web incorporado cuando el usuario gira el teléfono de vertical a horizontal - básicamente para cargar una vista que se adapta mejor al formato de pantalla ancha. ¿Es esto posible hacerlo sin llamar a una nueva página desde el servidor, es decir, para conducirlo desde dentro CSS / Javascript en sí?
Gracias!
Solución
Puede utilizar la propiedad window.orientation
. Su valor es la medida en que se utiliza el modo de vista actual. He aquí una breve ejemplo:
function updateOrientation()
{
var orientation=window.orientation;
switch(orientation)
{
case 0:
break;
case 90:
break;
case -90:
break;
}
}
Se puede utilizar esta función en este caso:
window.onorientationchange=updateOrientation;
Espero que ayude!
Otros consejos
Es mejor no establecer la propiedad onorientationchange
directamente. En lugar de utilizar el siguiente:
window.addEventListener('orientationchange', function (evt) {
switch(window.orientation) {
case 0: // portrait
case 180: // portrait
case 90: // landscape
case -90: // landscape
}
}, false);
No puedo creer que nadie hablado de la CSS gobernante:
@media screen and (max-width: 320px) // Portait Mode
{
/* CSS RULINGS */
p{}
body{}
}
@media screen and (min-width: 321px) // Landscape Mode
{
/* CSS RULINGS */
p{}
body{}
}
El navegador móvil Safari cuenta con el apoyo de la orientationchange
evento, así como la propiedad orientation
en la ventana, por lo que puede hacer algo como:
window.onorientationchange = function() {
switch(window.orientation) {
case 0: // Portrait
case 180: // Upside-down Portrait
// Javascript to setup Portrait view
break;
case -90: // Landscape: turned 90 degrees counter-clockwise
case 90: // Landscape: turned 90 degrees clockwise
// Javascript to steup Landscape view
break;
}
}
Yo añadiría al revés porque las directrices de la interfaz humana protectores y dicen que se deben apoyar todos orientaciones, por lo que se puede esperar Safari en el iPad (y, posiblemente, las futuras versiones de iPhone) para apoyarla.
soportes Safari Mobile eventos de orientación .
<body onorientationchange="updateOrientation();">