La respuesta a esta pregunta daría para al menos otro artículo. La cuestión es que existen algunos frameworks como el famoso Bootstrap de Twitter que facilitan muchísimo esta tarea.
No empero, existen casos en los que estos diseños «responsivos» o sensibles no son suficientes para cubrir todas las necesidades de visualización en dispositivos móviles.
Detectando la rotación de la pantalla
Por ejemplo, ¿qué ocurre si volteamos la pantalla de nuestra tablet o móvil? Normalmente, se producirá un «cambio de orientación«. Si hemos sido muy meticulosos con nuestro diseño, puede que hayamos previsto esta eventualidad en nuestro CSS (si os interesa, en otra ocasión os contaremos cómo). El propio navegador se ocupa de recargar los atributos CSS necesarios para esta nueva disposición.
Pero si no es así, aún nos quedan dos opciones. Antes de verlas, señalar que tenemos dos orientaciones básicas: vertical o retrato (portrait), y horizontal o paisaje (landscape). Una simple cuestión de nomenclatura. Vamos allá:
OPCIÓN 1: UtilizaNDO la API MOBILE
Podemos utilizar el método de la API mobile que escucha un evento orientationchange. Así de sencillo:
<script>// Escuchar cambios de orientación window.addEventListener("orientationchange", function() { // Hacer algo cuando cambia la orientación alert(window.orientation); }, false);</script>
Cuando se produce un cambio, la propiedad window.orientation
toma los siguientes valores:
- 0 = orientación portrait o retrato
- -90 = orientación paisaje o landscape a la derecha
- 90 = orientación paisaje o landscape a la izquierda
- 180 = orientación portrait o retrato invertida
OPCIÓN 2: jQuery Mobile
Como su nombre hace sospechar, jQuery Mobile no es más que una extensión de jQuery con algunas funcionalidades útiles en navegadores móviles.
Sin entrar en muchos detalles, os mostramos el código equivalente al de la Opción 1:
<script> // Escuchar un evento window.orientationchange $( window ).on( "orientationchange", function( event ) { alert( "Este dispositivo está en modo " + event.orientation); }); </script>
- «portrait» = modo retrato o vertical
- «landscape» = modo paisaje u horizontal
La documentación completa aquí.
¿Qué opción utilizar?
Todo depende de gustos. La opción 2, con jQuery Mobile, es ligeramente más simple. Pero dependemos de una librería JS que hay descargar y de que tu sitio sea compatible la versión de jQuery asociada. En cambio, con la opción 1 directamente utilizamos la API del navegador, con javascript puro y duro. A mí personalmente me gusta más esta opción. ¿Y a vosotros?