Tutorial: Transforma tu página web en Responsive Design

Tutorial: Transforma tu página web en Responsive Design

15 Jul 2020 in

Internet no para de evolucionar en todos los sentidos, aun en su tecnología. Hay cosas que se marchan poniendo de moda y luego, poco a poco, se marchan dejando a un lado, otras en cambio llegan con suficiente fuerza como para que todos sepamos que marcan el "camino a proseguir".

El "Adaptable Design" o en castellano "Diseño adaptativo", es una de estas últimas. Un sistema basado en los estándares web actuales que permite que nuestras webs se amolden a la pantalla del usuario que está viéndolas. El Responsive Design se ha puesto muy de moda con el apogeo de la navegación movil, mas va mucho más allá, se trata de webs con diseños inteligentes (smart que dirían los ingleses) que facilitan la usabilidad de las webs en función de quien las observa.

Pero el Adaptable Design no son simples añadidos a una web, es una filosofía del desarrollo del front de exactamente la misma totalmetne diferente y que engloba tal cantidad de detalles que resulta impracticable para muchas empresas y verdaderamente complejo para otras. Realmente yo a día de el día de hoy no recomiendo realizar webs en Adaptable Design, pues no estamos dispuestos para ello, pero si que podemos sacar algunos conocimientos sobre estas aplicaciones para hacer nuestras webs seudo-amoldables y prosperar la experiencia del usuario. Tal vez no hasta el nivel que los diseños responsive que vamos viendo nos marcan pero si con suficiente calidad como para que el ratio "mejoría/coste" nos merezca la pena.

Back to top

1) Por qué es complejo desarrollar webs en responsive design

Básicamente por dos motivos:

  • Porque es una tecnología verde, donde las distintas opciones para su aplicación empleo incluso no están suficientemente desarrolladas como para saber "como es la mejor". Si bien no paran de aparecer novedades a este respecto, No hay un framework ganador ni un estándar sobre como solucionar la mayor parte de dificultades.
  • Porque un diseño adaptativo no nace en la tecnología, sino más bien en el diseño de la página web. No se trata solo de que una vez tengamos nuestro diseño terminado debamos diseñar como variará con diferentes pantallas y dispositivos, sino que de forma directa hay que diseñar las webs pensando como se comportará. Esto, resulta extremadamente complejo para diseñadores que no saben precisamente como reacciona cada elemento a su adaptabilidad duplicando o triplicando el trabajo del maquetador que lo hace efectivo.

En terminante, necesitamos más tiempo para que la mayoría puedan permitirse trabajar con diseños adaptativos. Necesitamos que los conocimientos globales del campo (maquetadores, diseñadores, programadores e inclusive el personal comercial y de marketing) evolucionen en este sentido. Solo así vamos a poder acortar los tiempos de desarrollo de un diseño responsive y hacerlo práctico para su empleo en webs normales. La realidad es que a día de hoy puede resultar mucho más veloz sacar una nueva versión de la página web para moviles que rediseñarla para que sea adaptable.

Eso no significa que absolutamente nadie pueda lanzarse. Es muy normal que algunos deseen destacar y ser de los primeros y más "avanzados". Excelente! Que ellos abran el camino y nos muestren luego sus errores al resto de mortales.

Back to top

2) Entonces... ¿qué puedo hacer ?

Como decía antes, no lanzarnos a volver a diseñar todas nuestras webs no quiere decir que no podamos aprovechar las nuevas posibilidades que se nos brindan para hacer pequeños cambios en nuestras webs y por ende prosperar sensiblemente su adaptación a distintos navegadores y dispositivos.

Para ello, lo que debemos ver es de qué forma es nuestra web. Sobretodo a nivel de maquetación y esencialmente estructura HTML y CSS y a partir de ahí ver que pequeñas mejoras queremos aplicar.

Back to top

3) Consideraciones previas y hacks a conocer

Antes siquiera de proponernos la posibilidad de "reparar" nuestras webs para hacerlas más adaptables debemos conocer ciertas técnicas y consejos que nos vendrán realmente bien para trabajar y sin los cuales el trabajo no se hace solo complicado sino más bien prácticamente imposible.

1. El no es indispensable pero ayuda

Una web en código HTML semántico es una web cuya maqueta se ha realizado apropiadamente. Donde se han utilizado solo los elementos HTML indispensables, pensando más en el significado de cada etiqueta que en el diseño y dejando por consiguiente todo el trabajo de diseño al CSS en base a clases e ID's.

Si bien no es necesario utilizar adecuadamente los DIV, P, UL, LI, etcétera en nuestras maquetas para hacer Adaptable Design lo que si que es cierto es que al menos la una parte de suprimir todo el diseño de la maqueta debemos cumplirla. O sea, no podemos utilizar CSS intrusivo (nada de atributos "style" en medio del código) y cuanto más limpio (y con menos divs) sea nuestro HTML más fácil será efectuar las adpataciones, puesto que el CSS tendrá más poder sobre el resultado final.

2. Elección del Zoom en los navegadores móviles

Dado que esta claro que han existido antes los navegadores móviles que los diseños adaptados a ellos estos usaron desde el comienzo herramientas de zoom para poder visualizar webs completas. Si tu entras en una web normal con un móvil no verás la resolución real de tu móvil sino una versión que efectúa un zoom para adecuarse a los 960px de ancho.

Este es su comportamiento por defecto, sin embargo, asimismo se han creado etiquetas HTML para cambiarlo. Así, si nosotros vamos a adaptarnos un tanto a resoluciones móviles podemos simplemente señalarle al móvil que use otro tipo de escalado.

Para ello se utiliza la meta-etiqueta "viewport" (a agregar en el head de la página), donde podemos especificar el comportamiento que aguardamos que tenga un navegador de estas peculiaridades en con nuestra página web.

Esta es la configuración de la etiqueta viewport más utilizada para adaptable design, pero no es la única que podemos usar. Debemos comprender las dos variables que aquí aparecen a fin de que el móvil se adapte a nosotros y no al revés.

  • width:
    El ancho que forzamos al móvil a adoptar con la página web. Generalmente se señala como "device-width" para que se muestre la resolución real del dispositivo pero en dependencia del diseño que finalmente hayamos creado en la página web es posible que queramos especificar un tamaño fijo que coincida con la resolución que hemos preparado nosotros para la versión móvil de nuestra web.

    En webs que no llegan a ser del todo amoldables (o que no lo son en lo más mínimo) resulta muy útil, al poder supervisar el ancho de nuestro navegador. Imaginemos que tengo una web de 1200px de ancho y no voy a hacerla adaptable. Indicando el width a 1200px cuando menos conseguire que la primera visualización desde movil la contemple entera.

  • initial-scale:
    Con esta orden señalamos el valor del zoom que queremos que use el móvil. Siendo diez una visualización sin Zoom y dos.0 una ampliación de toda la web al doble de su tamaño.

    Por supuesto si vamos a crear un diseño adaptado al ancho del móvil la configuración de initial-scale=1.0 es la adecuada puesto que solicitamos al movil que no haga ningún género de zoom, pero muy frecuentemente será mejor no emplear esta variable y permitir al móvil que adapte el solo el zoom al width que le hemos definido.

    Por ejemplo, si indicamos que nuestro width es de 500px y también indicasemos initial-scale, la web tomaría el aspecto de una pantalla de 500px mas nosotros el en móvil solo veríamos la configuración original del móvil (que equivaldrían a unos 320px de los 500px totales por lo general). Sin embargo si no indicamos initial-scale la página web se mostraría con el zoom amoldado para verla completa (probablemente los 500px declarados).

En webs que no llegan a ser del todo amoldables (o bien que no lo son en absoluto) resulta muy útil, al poder supervisar el ancho de nuestro navegador. Supongamos que tengo una web de 1200px de ancho y no voy a hacerla responsive. Señalando el width a 1200px cuando menos conseguire que la primera visualización desde móvil la contemple entera.

Por supuesto si vamos a crear un diseño amoldado al ancho del movil la configuración de initial-scale=1.0 es la adecuada pues pedimos al móvil que no haga ningún tipo de zoom, mas muy frecuentemente será mejor no emplear esta variable y permitir al móvil que adapte el solo el zoom al width que le hemos definido.

Por ejemplo, si señalamos que nuestro width es de 500px e indicasemos initial-scale, la página web tomaría el aspecto de una pantalla de 500px pero el en móvil solo veríamos la configuración original del móvil (que equivaldrían a unos 320px de los 500px totales en general). No obstante si no señalamos initial-scale la página web se mostraría con el zoom amoldado para verla completa (seguramente los 500px declarados).

Por lo tanto tenemos dos típicas configuraciones de viewport...

Para webs con responsive design amoldado perfectamente a resoluciones móviles:

Para webs que no se han adaptado totalmente a resolución móvil:

Existen otras configuraciones, como por poner un ejemplo crear webs con un ancho de móvil mas con zoom ya aplicado para mostrar solo una parte... mas son webs extrañas con una usabilidad dudosa.

3. Las media queries

Las media queries son sentencias del CSS que nos permiten hacer declaraciones que solo se apliquen en nuestros diseños si se cumplen determinados requisitos que declaramos. Estas media queries se pueden aplicar esencialmente en 2 posibles puntos de la página web.

  • Al llamar al archivo css, señalando en cada uno las condiciones para cargarlo
  • O en el propio archivo CSS, formando un apartado donde incluir fragemntos de css a aplicar

Las media queries son realmente potentes y dejan salirse del responsive design para cubrir aspectos muy diferentes de nuestras webs. Seguidamente incluyo unos enlaces para que puedas informarte sobre ellas en tanto que no deseo complicar este post con explicaciones de cosas que luego no vamos a emplear.

Para lo que nos resulta de interés nos basta saber dos cosas. Por un lado como se declaran estas media queries en nuestro fichero CSS y por otro como dotar a los navegadores IE viejos de esta funcionalidad.

3.1 Declaración de media queries

Para declarar un fragmento de CSS dentro de un condicional marcado por una media query:

Donde además de esto veremos que lo más seguro es que apliquemos condiciones basadas en el ancho de pantalla que generan tres géneros de media queries:

Aplicar solo en resoluciones de menos de X pixeles de ancho:

Aplicar solo en resoluciones de más de X pixeles de ancho:

Aplicar solo en resoluciones entre X y también Y pixeles de ancho:

Depende de nuestros gustos cual usemos, mas lo normal es usar solo la primera de forma acumulativa de forma que a medida que hacemos el ancho más pequeño vayamos modificando elementos en nuestros diseños.

3.1 Compatibilidad de media queries con Internet explorer

Como siempre y en todo momento, explorer no va a soportar muchas cosas que a día de hoy ya son de dominio público. Por suerte siempre existen desarrolladores muy motivados que nos crean librerías para dotar compatibilidad a estos navegadores. En un caso así nos hallamos con una librería javascript que simplemente debemos añadir para Internet Explorer de versiones precedentes a la nueve.

Bastará cargar este script en el head de nuestra página y ya podremos utilizar media queries sin inconvenientes.

Como todas y cada una estas librerías, el resultado no es exacto mas si que da una gran compatibilidad en la mayoría de los casos.

Back to top

4) Los 3 diseños base dentro del design responsive

Una vez hemos visto los detalles de tecnología nuevos a usar con este tipo de diseños debemos ver como manejarlos. Como decía ya antes, soluciones hay miles, mas veamos la base que forma la concepción de la mayor parte de diseños adaptables el día de hoy en día:

Estamos habituados a que nuestras webs sean fijas, tal cual se diseñan en Photoshop las mostramos en nuestra página web. Esta claro que la equivalencia no es pixel a pixel pero se acerca bastante una visualización a otra. En responsive design esto cambia. Nos encontramos con una infinidad de dispositivos donde queremos que nuestra página web se adapte de manera perfecta. Mas estos dispositivos vamos a dividirlos en tres conjuntos básicos para saber como afrontarlos:

  • Grandes pantallas, donde nuestra web cabe y sobra incluso espacio para visualizarla
  • Pequeñas o antiguas pantallas, donde nuestra web, para el ancho marcado no cabe y nos aparece la odiosa barra inferior (que absolutamente nadie utiliza) para terminar de ver el contenido.
  • Pantallas móviles, donde el espacio es tan pequeño que la información no se lee apropiadamente con el diseño global

Lo que tenemos que buscar entonces es como dar salida, con nuestro diseño actual a un diseño valido y usable para todas y cada una con nuestro actual diseño y maqueta de página. Esto, en dependencia de como esté maquetada nuestra página puede darnos aproximadamente problemas, mas por norma general, con el género de trabajo que se realiza en la actualidad podemos lograr ciertas cosas.

4.1) Solucionando las pantallas grandes en responsive design

En este aspecto en general no hay mayor problema ya que nuestra web ya ha sido creada para ser vista en pantallas grandes. Hoy lo normal es que nuestra web tenga un marco centrado de 960px de pantalla y así encaje bien siendo cargada con el zoom aplicado en la mayoría de móviles. Si nuestra página web es un tanto antigua es posible que tenga aun ciertos pixeles más al haber sido pensada para pantallas de 1024px de ancho.

Sea como sea, lo lógico es que nuestra página web disponga de contenedores de este tipo:

Esta sintaxis nos deja crear un contenedor (main) que queda centrado en la página. Además con diferentes backgrounds será posible decorar el exterior de la página para darle un tanto de diseño y no dejarla toda blanca o negra.

En fin, en estos casos no hay mucha cosa que hacer con pantallas grandes. Es cierto que posiblemente nuestra web sea vista en un T.V. donde además de gran pantalla nos encontramos con que el usuario navega a cierta distancia del monitor. Esto requeriría de tratar estas pantallas como los móviles (con grandes cambios) mas verdaderamente es tan poca la gente que navega en su T.V. que no suelen merecer la pena estas adaptaciones. Si todavía de esta manera, quieres crear tu adaptación a televisores puedes jugar con reglas parecidas a las de móvil que se explicarán más adelante.

4.2) Solucionando las pantallas pequeñas en adaptable design

Aquí es donde empezamos a localizar nuestros inconvenientes. Nuestra página web está preparada para un ancho de pantalla y resulta que tenemos un porcentaje de usuarios significativo con resoluciones menores.

Comprobar si esto nos sucede es fácil si usamos Google Analytics o bien cualquier otro sistema de analítica de página. Ahí podremos hallar no solamente las resoluciones de pantalla de nuestros usuarios sino unas partes de nuestra página web suelen verse en nuestra página web. Hace no mucho disponíamos de una herramienta llamada "Google Browser size", mas está obsoleta en favor de la misma funcionalidad en Analytics.

Lo primero que tenemos que decidir es en que punto termina la pantalla pequeña y cuando empieza la móvil. Esto es, esta claro que nuestra página web no cabe en resoluciones pequeñas y vamos a deber encogerla un poco para ellas, mas va a llegar un instante en el que deje de tener sentido este "encogimiento" simple por aglutinar demasiados elementos en la pantalla con el mismo. Para tomar esa resolución conozcamos algunos datos sobre los móviles:

  • Un dispositivo móvil en vertical (como más suele utilizarse), sin importar su auténtica resolución, suele adoptar una resolución de dispositivo de 320px de ancho.
  • En horizontal esta resolución se adapta al tamaño real de pantalla, mas acostumbra a quedar entre los 400px y los 600px. Por ejemplo en mi Samsung Galaxy S2 adopta 530px de ancho
  • En tablets esta resolución depende de la del dispositivo mas acostumbra a quedar en los modelos más vendidos por encima de los 600px, aunque puede llegar a los 1024px

El estándar que se está adoptando es trabajar encogiendo la página para resoluciones pequeñas hasta los 400px de ancho, medida a partir de la cual se entiende que el dispositivo debe mudar radicalmente su visionado y probablemente funcionamiento básico. También encontraremos como ciertas personas deciden visualizar encogiendo hasta los 600px de ancho y a partir de ahí empiezan a crear versiones intermediasentre pantalla pequeña y móvil.

Por último, también sabemos que el mínimo de ancho en el que debemos pensar estará en los 320px de ancho, lo que nos deja además tener un margen desde el que no operar en absoluto.

Tu decides, creo que procurar englobar todos los dispositivos es una insensatez. Al final lo que debemos pensar es en estilos de navegación del usuario donde solo tenemos 3.

  • Móviles en vertical: Donde la pantalla solo permite lectura y navegación muy simplificada (320px-400px)
  • Móviles en horizontal y tablets: Donde ya se permite una visualización horizontal tradicional mas donde hay que vigilar que la navegación se produce con taps y no con clicks (por lo que hay que eludir las acciones onMouseOver (400px-600px-800px)
  • Dispositivos de sobremesa: Donde nuestra web normal (>800px)

Así, yo comprendo la "pantalla pequeña" como una mezcla de pc, móviles horizontales y tablets, lo que la vuelve ligeramente compleja en si misma, pero nos facilita el trabajo real de maquetación por bloques al unificar todos estos dispositivos en una acción.

Bien, una vez decidido nuestro ancho móvil, lo que tenemos que hacer es trabajar en esa visualización intermedia convirtiendo los bloques que tenemos hoy día a fin de que puedan cambiar de tamaño dependiendo del tamaño de pantalla.

Contenedores globales de la página

Llamamos contenedores globales a aquellos que marcan los anchos globales de nuestra página web. Esos que afirmábamos ya antes que nos permitían centrarla y dalre un ancho específico.

Los contenedores globales son los más simples de amoldar pues lo único que debemos hacer es no ser tan rígidos con su ancho y pasar de un ancho fijo a un ancho máximo. Dicho de otro modo, va a bastar con que en mi declaración inicial del marco de la página pase de "width" a "max-width". Además y en tanto que hemos pensado en como va a ser nuestra resolución mínima para pantallas móviles añadiremos esta como min-width para controlar que ante dispositivos realmente extraños no provoquemos una página no controlada.

El resultado será el mismo para pantallas grandes y no obstante, vamos a ver como al hacer más pequeña nuestra página este marco se va haciendo más pequeño.

Os voy poniendo ejemplos sobre la transformación que he ido realizando en mi weblog (weblog.ikhuerta.com, o sea la página web que estás viendo ahora mismo)

En mi caso marcado un ancho de 1080px de página que se aplicaba en los elementos de cabecera, contenido primordial y footer. Mi primer paso ha sido por lo tanto pasar esa medida, en los distintos bloques globales a ancho máximo de página en lugar de fijo. En tu caso esto podría representar más o menos sentencias en dependencia de la cantidad de bloques de esta clase que emplees.

Contenedores interiores

A partir de acá es donde acostumbramos a comenzar a tener inconvenientes. Nuestra página probablemente va a estar formada por un layout que se dividirá en múltiples piezas:

  • Cabecera a 100 por ciento de ancho
  • Contenido ocupando gran parte del ancho
  • Uno o bien más sidebars ocupando solo una parte del lateral
  • Pie de página a un cien por cien de ancho

En terminante, tenemos algunos contenedores que probablemente tendrán un ancho fijo para marcar columnas en la página web. Entonces estos podrán haberse transformado en columnas con diferentes técnicas (floats en la mayor parte de los casos, display:inline o en otros). Conque lo próximo que tengo que hacer es transformar esos valores en declaraciones menos estrictas y que respeten que el contenedor principal ya no mide exactamente lo que habíamos marcado.

Es decir, debemos pasar de Pixeles a porcentajes todo cuanto represente algún espacio en el ancho de página: widths, max-widths, margins y paddings.

Por suerte, una vez está terminada nuestra maqueta este paso es verdaderamente sencillo. Tan solo tenemos que hacer una pequeña división para saber el valor porcentual que representa una medida en pixeles sobre la de su elemento contenedor.

[Px de ancho elemento interior] / [Px de ancho elemento padre] * cien

En mi caso, para este blog, tuve la suerte de que muchos contenedores ya estaban en medida porcentual. Esta es buena costumbre de maquetación, si porcentualmente existe un valor claro es preferible utilizarlo así para futuros cambios con independencia de si utilizamos o no adaptable design.

El elemento más molesto que me hallé fue el columnado que al estar desarrollado con elementos float al hacer más pequeño el marco el sidebar pasaba a quedar bajo el contenido. Conque realizamos los cálculos de los elementos dentro del div de contenedor global (que recordemos tenía un ancho de 1080px) y pasamos a porcentaje estas medidas.

Nótese que hemos transformado no solo los anchos, sino asimismo los márgenes horizontales para que toda la web siga cuadrando. Asimismo hemos incluyendo un gran número de decimales en el cálculo para ser lo más exactos al original.

Elementos interiores sueltos que medran demasiado

En algunas ocasiones posiblemente nos hallemos con elementos sueltos en nuestra maqueta que por sus peculiaridades pueden llegar a hacerse más grandes de lo que lo es su contenedor con max-width.

Lo mejor para detectar estos elementos es ir jugando con tu tamaño de navegador para advertirlos y corregirlos. Pero en muchas ocasiones será más veloz y de qué forma elegir nuestors contenedores y prohibir que ninguno de sus elementos interiores crezca más de lo que mide el propio contenedor.

En mi caso he decidido aplicar esta corrección dentro de mi contenido principal y mi sidebar, de forma que ciertos problemas (sobretodo derivados de widgets como fb y twitter) se resolviesen por si solos.

Elementos posicionados en absoluto

Para los elementos posicionados en lo más mínimo va a haber que efectuar el mismo proceso que con los anchos de elemento. Estos van a deber adaptarse a porcentajes en su eje X y cambiar su ancho.

En mi caso, disponía de múltiples elementos en lo más mínimo en la cabecera por lo que he debido adaptar sus situaciones a fin de que no quedaran flotando en el aire al hacer más pequeña la página.

Elementos que no caben... nuestras primeras "Media Queries"

Por mucho que adaptemos nuestros anchos probablemente haya elementos que sencillamente por el contenido que deben incluir no quepan en el diseño. Estos elementos nos están molestando y haciendo que todos nuestros cambios se vean mal. Para evitarlo deberemos empezar a hacer uso de media queries sencillas que nos dejen cambiar drasticamente el CSS cuando se produzcan ciertas dimensiones.

Las media queries son un planeta, aun hoy que no han sido totalmente explotadas, se pueden hacer cosas pasmosas con ellas. Pero nosotros lo que vamos a hacer será algo muy sencillo, simplemente las usaremos para marcar condiciones sobre el ancho de pantalla a partir del cual nuestro CSS cambie.

Recordemos esa sintáxis:

Estas media queries, para este caso concreto, en el que solo buscamos adaptar el diseño a distintas resoluciones, nos servirán sobretodo para ocultar ciertos elementos secundarios que a partir de cierto ancho de pantalla incordian más que asisten al usuario y para hacer pequeñas adaptaciones para que algunos objetos quepan en el diseño ante distintas situaciones.

En mi caso, he decidido ocultar algunos elementos con resoluciones menores de 800px o bien 600px, pues no dejaban que se pudiese ver bien el contenido principal del blog.

En resoluciones de menos de 800px, escondo los botones de like, el breadcrumb, los botones sociales y alguna cosilla más. Desde menos de 600px he decidido además de esto suprimir los últimos tweets del sidebar para que no quedase todo tan apretado.

Sencillo, ¿cierto??

Pero las media queries no solo sirven para ocultar contenido. Sino dejan hacer modificaciones en algunos estilos. Esto es en especial útil cuando un elemento no se adapta sencillamente con anchos mas aun no deseamos hacerlo desaparecer. En ese instante le cambiamos un poco el estilo a fin de que se adapte a lo que buscamos.

En mi caso, me daban algunos problemas los botones sociales a poco que bajase el ancho de página, por lo que he decidido mudar un tanto su formato (eliminando iconos y reduciendo la letra) cuando la página baja de 960px de ancho.

Qué hacer con los menús y sus opciones

Los menús acostumbran a ser un problema grave al hacer nuestras páginas más pequeñas pues al tratarse de un conjunto de elementos mínimamente largo que además no es parte integrante de la información primordial de la página (y por lo tanto no podemos permitirnos que ocupe demasiado espacio de exactamente la misma) el espacio destinado a los mismos se nos acostumbra a quedar corto en algún instante. Completemos esta problemática con que los dispositivos táctiles resultan incómodos con listados de links pequeños (con lo que encoger los links no suele ser una opción alternativa)

Por suerte podemos recurrir a distintos recursos que solucionan estos inconvenientes. A mi el que más me agrada (por el momento) es el de sustituir los menús por un SELECT que cuando el usuario usa mudar la dirección de la página que estamos viendo por la del destino del enlace.

Me gusta porque resume grandes listados en un bloque pequeño y pues al mismo tiempo, llegados a un móvil o bien tablet el comportamiento de los SELECT se vuelve ideal, pues deja al usuario elegir sus opciones con comodidad.

Para realizar este cambio os recomiendo el un fácil plugin, con gran compatibilidad, al que señalamos los diferentes elementos UL de nuestros listados y el añade ya antes de estos un SELECT con las peculiaridades que mencionabamos. Por ende solo nos queda ocultar el propio UL o el SELECT con nuestras media queries para conseguir un resultado óptimo.

En mi caso he añadido el plugin para los listados de links de la cabecera, de manera que al bajar de 800px de ancho estos sean sustituidos por el SELECT en cuestión.

Así que he realizado tres pasos:

1- Incorporar el script y en el "ready" de mi jquery hacer la llamada al nuevo método:

Esto añade el SELECT en los tres listados de enlaces del menú superior.

2- Añadir a mi CSS básico que no se muestren estos nuevos SELECT.

3- Añadir dentro de la media query adecuada el formato del select y la desaparición del propio listado.

Y ya tenemos nuestros SELECTs bajo los 800px de ancho.

Backgrounds de bloques

Aquí, dependiendo de nuestra maqueta es donde podemos tener arduos problemas. En CSS decoramos nuestros bloques con imágenes de fondo. Existen inumerables técnicas para hacer esto pero unas son más afables que otras a los redimensionamientos. Por ende, en dependencia de las técnicas que hayamos empleado podemos encontrarnos con que nuestros fondos pierden sentido al esconderse sus bordes.

Esto puede ser sencillamente anecdótico en ciertos casos, pero preferible a que el factor no se adapte al diseño mas en otros puede ser un auténtico quebradero de cabeza.

Soluciónes varias:

  • Cambia todos y cada uno de los fondos que puedas por estilos CSS3 que responderán de manera perfecta a estos cambios. A día de hoy es simple dar compatibilidad a la mayoría de los navegadores para el empleo de bordes redondeados, sombras o bien degradados. Con estas tres funciones CSS es difícil que tus diseños precisen de muchas imágenes para crear los bloques.
  • Elimina imágenes de fondo (y reemplazalas si puedes por el CSS3 más cercano) a medida que las media queries y anchos adaptables realicen su función
  • En el caso de grandes fondos que contenían la situación de un bloque duplica en el bloque este estilo y también intenta que se note poco el background original

En mi caso este weblog es bastante fácil y solo me he encontrado con tres géneros de imágenes de fondo molestas:

  • Los bordes del marco de la página, que incluso no respetándose, al quedar bajo la parte no visible no han resultado molestos
  • Los iconos de algunos títulos, que he debido ir escondiendo con media queries conforme resultaban molestos
  • El background global de la cabecera, que incluía el cuadro blanco para el nombre del autor. Acá he debido contestar el estilo en el cuadro de autor de forma que se solape un fondo con otro al empequeñecer la página

No pongo el CSS de como están resueltas estas partes precisas en mi weblog, pues en todos y cada caso la solución será diferente.

Se terminó!

Y con todo esto ya hemos conseguido un diseño bastante amoldable. De la rigidez que teníamos con un diseño fijo en 1080px de ancho, ahora tenemos un blog que puede ser gozado en un mayor número de dispositivos... mas falta algo. Faltan los móviles, donde el diseño se ve bien con estos cambios pero resulta poco práctico (con sus dos columnas y elementos apretados en la cabecera).

4.3) Solucionando las pantallas móviles en responsive design

Como úlltimo paso debemos delimitar una visualización correcta para móviles. Esto es de este modo pues el uso que se va a hacer en estos dispositivos no va a ser el mismo que en páginas normales. Sin duda querremos hacer más cambios que simples adaptaciones del ancho de pantalla y desaparición de elementos.

Por suerte, contamos con el viewport para acotar como deseamos trabajar esta parte.

Comentábamos que el viewport nos sirve para apuntar al móvil como deseamos que trabaje su Zoom a la hora de mostrarnos la página. Así, esencialmente teníamos dos opciones:

Para webs con responsive design amoldado de manera perfecta a resoluciones móviles:

Para webs que no se han amoldado del todo a resolución móvil:

La primera es la situación ideal, mas también la que más trabajo va a darnos, pues al bajar de los 500-400px de ancho las columnas se vuelven directamente imposibles y eso significa que tenemos que hacer cambios drásticos en la visualización de la web.

La segunda opción puede ser más veloz. Simplemente indicamos que el móvil se visualice a la resolución que queramos y así se comportará... seguirá siendo nuestra web normal mas en su versión más encogida.

Pero si escogemos la segunda opción tendremos dos inconvenientes con nuestra web:

  • Por un lado el viewport es global a todos los navegadores móviles, por lo que si señalamos, por servirnos de un ejemplo, un viewport de 500px de ancho provocaremos que en un ipad de casi 800px de ancho se visualice una versión de nuestra web a 500px que indudablemente desaprovechará el espacio disponible
  • Por otro, en resoluciones de 320px de ancho, nuestros contenidos se verán bastante reducidos con lo que si no hacemos conforme que cambios será inmanejable... Mas si adaptamos menús y fuentes también se alterarán en la versión tablet.

En definitiva, marcar un ancho fijo con viewport es la opción rápida mas no la buena.

Lo suyo es que dejemos al móvil mostrarnos la resolución que sea capaz de mostrar utilizando el primer viewport en nuestro HEAD de la página.

Una vez hemos decidido nuestra visualización debemos ponernos a trabajar en nuestra última media query: la versión móvil.

Aquí por norma general eliminaremos las columnas pasándolo todo a bloques de cien por cien de ancho. Suprimiremos y comprimirémos ciertos elementos más y ajustaremos las fuentes a fin de que la lectura a 320px de ancho resulte cómoda en dispositivos de pequeña pantalla.

Eliminando columnas:

Vamos a poner nuestras columnas una tras otra. Existen entonces dos posibilidades.

a. Que en el html ya estuviesen ordenadas tal como las queremos en la versión móvil.

En cuyo caso va a bastar con eliminar los floats o mudar el display:inline-block o display:box por un display:block normal.

b. Que no se encontrasen ordenadas.

En cuyo caso vamos a deber jugar con situaciones absolutas que hagan a estos bloques inferiores pasar a la parte alta de la página y márgenes para desplazar los primeros bloques hacia abajo a fin de que no se crucen.

Imáginemos esta estructura:

Donde queremos que en la versión móvil los elementos del sidebar queden antes que los de content. Nuestro css tomará un aspecto cercano al siguiente:

En mi caso me hallé en este segundo caso, por lo que en móvil he debido recurrir a situaciones absolutas. Además de esto situé el cambio a 450px de ancho, debido a que la visualización se volvía realmente incómoda a partir de ese punto.

Ajustando Fuentes

Las fuentes que en su día se diseñaron para ajustarse a grandes pantallas, con un layout de columnas, etcétera Cuando cambiamos a las pequeñas pantallas de móvil en vertical estas suelen no ser las más cómodas para la lectura: Ocupan demasiado ancho, resaltan demasiado los titulares y el texto del cuerpo suele ser difícil de leer. Por tanto resulta conveniente hacer una revisión de todas para ajustar la visualización a una versión cómoda.

En mi caso he tenido que mudar todo el estilo de las fuentes de los menús, disminuir los titulares y acrecentar el cuerpo de los artículos:

Otros ajustes

Por último, queda dejar "bonito" el resultado. Como anteriormente, revisemos nuestros elementos, reestilicemos aquellos que no se ajusten a lo que queremos y suprimamos aquellos que no tengan cabida.

En mi caso he debido suprimir totalmente el bloque de autor, pasar a horizontal los elementos del sidebar y desplazar ciertos márgenes de lugar.

Con todo esto ya vamos a tener nuestra página web móvil lista para trabajar.

Back to top

5) Testing y pruebas

Para trabajar con todo lo aquí explicado es esencial poder testar lo que vamos haciendo y los cambios que vamos provocando. Acá me agradaría compartir con vosotros 2 recursos:

1. Para probar en el navegador:

Debemos ir ajustando el ancho de pantantalla para ver como nuestras adaptaciones toman forma y detectar pequeños ajustes a realizar en nuestras media queries.

Para ello tenemos dos opciones:

  • Directamente desmaximizar nuestro navegador y también ir jugando con su ancho
  • Usar herramientas como que nos permitirá ir haciendo estos ajustes con sencillos botones

2. Eludiendo la caché movil

Los móviles en su anhelo por no pedir más datos de los estrictamente necesarios cachean mucho más que un navegador tradicional. En un navegador acostumbra a bastar con presionar CTRL+F5 para provocar cargas sin cacheo. En móviles es más dificil y algunos navegadores nisiquiera tienen la opción de desactivar esta caché.

Para trabajar de forma más cómoda me gustaría daros tres consejos:

  • Usar variables en la llamada CSS. Es decir en vez de llamar a "/styles.css" llamaremos a "/styles.css?version=xxxx" mudando en todos y cada caso el numero de versión para que la url sea diferente y por tanto no se use caché
  • Trabajar en el navegador. Subiendo un poco la resolución mínima móvil (420px-450px) vamos a poder provocar que esta sea vista en nuestro navegador cuando lo encojamos lo bastante. Asimismo utilizando herramientas de redimensionado de página podemos provocar estas acciones. Esto resultará indudablemente más cómodo para muchas pruebas mas no evita probar por último en el propio móvil
Back to top

6) Conclusión

Poco a poco hemos ido viendo y conociendo las distintas técnicas y tecnologías que acostumbran a aplicarse al adaptable design mas aplicándolas a una web existente en vez de al desarrollo de webs nuevas.

¿Hemos hecho una web con responsive design?

La respuesta es clara: NO. Hemos hecho más adaptativa una web que no fue creada para serlo. En consecuencia hemos cometido muchos fallos durante el proceso:

  • Hemos eliminado elementos que en su día consideramos vitales. Además de esto lo hemos hecho por su aspecto no por su importancia en la información trasmitida al usuario
  • Seguramente no hemos conseguido una visualización perfecta en todos los casos. Hemos mejorado la que había, pero el resultado no es el mismo que si hubiesemos planeado todo esto de antemano
  • Por último, yo he podido llegar al final con esta web, pero muchas webs, en dependencia de la maqueta de la que broten no van a poder llegar tan lejos y tendrán que conformarse con soluciones intermedias

Estos son los detalles, mas más importante que todo esto es que lo que hemos hecho ha sido una maqueta amoldable sobre un diseño que no era adaptativo. Responsive Design nos habla de diseño, no de maqueta, con lo que debe venir directametne desde el concepto de diseño para que acabe de tener sentido para todos. No se trata de ser "guay" y poder mostrar una web que se encoje y se amolda ligerísimamente al móvil sino que nuestro proyecto debería haber surgido bajo el paradigma de ser multidispositivo, valorando en cada caso su usabilidad.

Sin duda, si prosigues este tutorial y lo aplicas a tu página web vas a poder hacer maquetas responsive mas eso no significa que puedas hacer adaptable design. Como decía al principio, sigue faltando mucha base, mucho conocimiento y muchos procesos (no tan puntuales, no tan técnicos) para lograrlo en una empresa normal. Podremos hacer nuestros pequeños proyectos, pero para empresas, este proceso prosigue siendo un trauma doloroso por el que no recomendaría a nadie pasar.

¿Te gustó este artículo? Puedes continuar sus comentarios a través de , o realizar desde tu weblog.

Back to top
Share icon

ESTOS EXCLUSIVOS INFORMES GRATUITO REVELAN

7 SECRETOS DE EXPERTOS SEO QUE TE LLEVÁN AL 1#
7 SECRETOS DE EXPERTOS SEO QUE TE LLEVÁN AL 1# EN GOOGLE PARA GANAR 10.000s DE TRÁFICO DE CALIDAD GRATUITO - EN SÓLO 2 MESES
 

Los 7 pasos más poderosos para disparar tu ranking orgánico para ALCANZAR Y MANTENER un impresionante tráfico orgánico es TUYO.

Consigue gratis lo que el 1% de los expertos en SEO venden por miles de euros... y el otro 99% ni siquiera sabe que existe.


OBTEN MI INFORME GRATUITO
5 errores que debes evitar en tu sitio web de Drupal
Ebook - 5 errores que debes evitar en tu sitio web de Drupal (¡podrían costarte miles de euros!)
 

Este Ebook cubre 5 terribles errores que probablemente estés cometiendo ahora mismo con tu sitio web de Drupal.

¡Nº3 TE SORPRENDERÁ! Esta lectura de 10 minutos te ahorrará miles de euros.



OBTEN MI INFORME GRATUITO