Estoy creando una aplicación web para iPhone y quiero bloquear la orientación al modo vertical. ¿es posible? ¿Hay alguna extensión de kit web para hacer esto?
Tenga en cuenta que esta es una aplicación escrita en HTML y JavaScript para Mobile Safari, NO es una aplicación nativa escrita en Objective-C.
orientation
iphone
Kevin
fuente
fuente
Respuestas:
Puede especificar estilos CSS en función de la orientación de la ventana gráfica: oriente el navegador con body [orient = "landscape"] o body [orient = "portrait"]
http://www.evotech.net/blog/2007/07/web-development-for-the-iphone/
Sin embargo...
El enfoque de Apple para este problema es permitir que el desarrollador cambie el CSS en función del cambio de orientación, pero no para evitar la reorientación por completo. Encontré una pregunta similar en otro lugar:
http://ask.metafilter.com/99784/How-can-I-lock-iPhone-orientation-in-Mobile-Safari
fuente
Esta es una solución bastante hacky, pero al menos es algo (?). La idea es usar una transformación CSS para rotar el contenido de su página al modo cuasi-retrato. Aquí está el código JavaScript (expresado en jQuery) para comenzar:
El código espera que todo el contenido de su página viva dentro de un div justo dentro del elemento del cuerpo. Gira ese div 90 grados en modo horizontal, de vuelta al retrato.
Izquierda como ejercicio para el lector: el div gira alrededor de su punto central, por lo que es probable que sea necesario ajustar su posición a menos que sea perfectamente cuadrada.
Además, hay un problema visual poco atractivo. Cuando cambia la orientación, Safari gira lentamente, luego el div de nivel superior se ajusta a 90 grados diferentes. Para aún más diversión, agregue
a tu CSS. Cuando el dispositivo gira, Safari lo hace, luego lo hace el contenido de su página. Seductor!
fuente
Esta respuesta aún no es posible, pero la estoy publicando para "generaciones futuras". Con suerte, algún día podremos hacerlo a través de la regla CSS @viewport:
Aquí está la página "¿Puedo usar? (A partir de 2019 solo IE y Edge):
https://caniuse.com/#feat=mdn-css_at-rules_viewport_orientation
Especificaciones (en proceso):
https://drafts.csswg.org/css-device-adapt/#orientation-desc
MDN:
https://developer.mozilla.org/en-US/docs/Web/CSS/@viewport/orientation
Según la tabla de compatibilidad del navegador MDN y el siguiente artículo, parece que hay cierto soporte en ciertas versiones de IE y Opera:
http://menacingcloud.com/?c=cssViewportOrMetaTag
Esta especificación API de JS también parece relevante:
https://w3c.github.io/screen-orientation/
Asumí eso porque era posible con la propuesta
@viewport
regla , sería posible al establecerorientation
la configuración de la ventana gráfica en unameta
etiqueta, pero hasta ahora no he tenido éxito con esto.Siéntase libre de actualizar esta respuesta a medida que las cosas mejoren.
fuente
El siguiente código se utilizó en nuestro juego html5.
fuente
Se me ocurrió este método CSS único de rotación de la pantalla mediante consultas de medios. Las consultas se basan en los tamaños de pantalla que encontré aquí . 480px parecía ser bueno ya que ninguno / pocos dispositivos tenían más de 480px de ancho o menos de 480px de altura.
fuente
orientation: landscape
no funcionaría tan bien en mi ejemplo @JustinPutneyScreen.lockOrientation()
resuelve este problema, aunque el soporte es menos que universal en ese momento (abril de 2017):https://www.w3.org/TR/screen-orientation/
https://developer.mozilla.org/en-US/docs/Web/API/Screen.lockOrientation
fuente
Me gusta la idea de decirle al usuario que vuelva a poner su teléfono en modo vertical. Como se menciona aquí: http://tech.sarathdr.com/featured/prevent-landscape-orientation-of-iphone-web-apps/ ... pero utilizando CSS en lugar de JavaScript.
fuente
Tal vez en un nuevo futuro tendrá una solución lista para usar ...
En mayo de 2015,
Hay una funcionalidad experimental que hace eso.
Pero solo funciona en Firefox 18+, IE11 + y Chrome 38+.
Sin embargo, todavía no funciona en Opera o Safari.
https://developer.mozilla.org/en-US/docs/Web/API/Screen/lockOrientation#Browser_compatibility
Aquí está el código actual para los navegadores compatibles:
fuente
Si bien no puede evitar que el cambio de orientación surta efecto, no puede emular ningún cambio como se indica en otras respuestas.
Primero detecte la orientación o reorientación del dispositivo y, usando JavaScript, agregue un nombre de clase a su elemento de ajuste (en este ejemplo, uso la etiqueta body).
Luego, si el dispositivo es horizontal, use CSS para establecer el ancho del cuerpo a la altura de la vista y la altura del cuerpo al ancho de la vista. Y configuremos el origen de la transformación mientras estamos en ello.
Ahora, reoriente el elemento del cuerpo y deslícelo (traduzca) a su posición.
fuente
Esto, o una solución CSS similar, al menos conservará su diseño si eso es lo que busca.
La solución raíz es tener en cuenta las capacidades del dispositivo en lugar de intentar limitarlas. Si el dispositivo no le permite la limitación adecuada, un simple truco es su mejor opción, ya que el diseño es esencialmente incompleto. Cuanto más simple, mejor.
fuente
En café si alguien lo necesita.
fuente
Inspirado en la respuesta de @ Grumdrig, y debido a que algunas de las instrucciones utilizadas no funcionarían, sugiero el siguiente script si alguien más lo necesita:
fuente
Tengo un problema similar, pero para hacer un paisaje ... creo que el siguiente código debería hacer el truco:
fuente
Haga clic aquí para ver un tutorial y un ejemplo de trabajo de mi sitio web.
Ya no necesita usar hacks solo para mirar la orientación de la pantalla de jQuery Mobile ni debe usar PhoneGap más, a menos que realmente esté usando PhoneGap.
Para que esto funcione en el año 2015 necesitamos:
Y uno de estos complementos dependiendo de su versión de Cordova:
complemento cordova agregar net.yoik.cordova.plugins.screenorientation
complemento cordova agregar cordova-plugin-screen-orientación
Y para bloquear la orientación de la pantalla solo use esta función:
Para desbloquearlo:
Posibles orientaciones:
vertical-primaria La orientación está en el modo vertical primario.
retrato-secundario La orientación está en el modo de retrato secundario.
landscape-primary La orientación está en el modo horizontal primario.
paisaje-secundario La orientación está en el modo paisaje secundario.
vertical La orientación es vertical principal o vertical secundaria (sensor).
paisaje La orientación es paisaje primario o paisaje secundario (sensor).
fuente