Tutorial: Convierte tu página web en Adaptable Design

Tutorial: Convierte tu página web en Adaptable Design

15 Jul 2020 in

Internet no para de evolucionar en todos y cada uno de los sentidos, aun en su tecnología. Hay cosas que se van poniendo de moda y luego, poquito a poco, se van 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 adapten a la pantalla del usuario que está viéndolas. El Adaptable Design se ha puesto muy de moda con el apogeo de la navegación móvil, pero va considerablemente 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 funcion de quien las observa.

Pero el Adaptable Design no son bien simples añadidos a una web, es una filosofía del desarrollo del front de la misma totalmetne diferente y que abarca tal cantidad de detalles que resulta impracticable para muchas empresas y realmente complejo para otras. Realmente yo a día de el día de hoy no aconsejo realizar webs en Adaptable Design, pues no estamos preparados para ello, pero si que podemos sacar determinados conocimientos sobre estas aplicaciones para hacer nuestras webs seudo-adaptables y mejorar la experiencia del usuario. Quizá no hasta el nivel que los diseños adaptables que vamos viendo nos marcan pero si con suficiente calidad como para que el ratio "mejoría/coste" nos valga la pena.

Back to top

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

Básicamente por 2 motivos:

  • Porque es una tecnología verde, donde las diferentes opciones para su aplicación uso aun no están lo suficientemente desarrolladas para saber "cual es la mejor". Aunque no paran de aparecer novedades al respecto, No hay un framework ganador ni un estándar sobre como resolver la mayoría de dificultades.
  • Porque un diseño adaptativo no nace en la tecnología, sino en el diseño de la web. No se trata solo de que una vez tengamos nuestro diseño terminado debamos diseñar como cambiará con distintas pantallas y dispositivos, sino que de manera 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 tresdoblando el trabajo del maquetador que lo hace efectivo.

En definitiva, precisamos más tiempo para que la mayor parte puedan permitirse trabajar con diseños adaptativos. Precisamos 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 uso en webs normales. La realidad es que a día de hoy puede resultar mucho más rápido sacar una nueva versión de la página web para moviles que rediseñarla para que sea amoldable.

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

Back to top

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

Como afirmaba ya antes, no lanzarnos a rediseñar todas nuestras webs no quiere decir que no podamos aprovechar las nuevas posibilidades que se nos ofrecen para hacer pequeños cambios en nuestras webs y por lo tanto mejorar sensiblemente su adaptación a distintos navegadores y dispositivos.

Para ello, lo que tenemos que ver es cómo es nuestra página web. Sobretodo a nivel de maquetación y fundamentalmente estructura HTML y CSS y a partir de ahí ver que pequeñas mejoras deseamos aplicar.

Back to top

3) Consideraciones anteriores y hacks a conocer

Antes siquiera de plantearnos la posibilidad de "arreglar" nuestras webs para hacerlas más adaptables tenemos que conocer ciertas técnicas y consejos que nos vendrán muy bien para trabajar y sin los cuales el trabajo no se hace solo complicado sino más bien casi imposible.

1. El no es indispensable mas ayuda

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

Si bien no es preciso usar adecuadamente los DIV, P, UL, LI, etcétera en nuestras maquetas para hacer Adaptable Design lo que si que es es cierto que por lo menos la parte de quitar todo el diseño de la maqueta debemos cumplirla. Es decir, no podemos usar 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 va a ser realizar las adpataciones, pues el CSS va a tener más poder sobre el resultado final.

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

Dado que esta claro que han existido ya antes los navegadores móviles que los diseños adaptados a ellos estos emplearon desde el principio 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, también se han creado etiquetas en código 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 emplea la meta-etiqueta "viewport" (a incorporar en el head de la página), donde podemos concretar el comportamiento que aguardamos que tenga un navegador de estas peculiaridades en con nuestra 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 acá 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. Normalmente se señala como "device-width" para que se muestre la resolución real del dispositivo pero en dependencia del diseño que por último hayamos creado en la página web es posible que queramos detallar 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 adaptables (o bien que no lo son en absoluto) 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 por lo menos conseguire que la primera visualización desde movil la contemple entera.

  • initial-scale:
    Con esta orden indicamos 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 página web al doble de su tamaño.

    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 movil que no haga ningún género de zoom, pero muy frecuentemente va a 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 el en móvil solo veríamos la configuración original del móvil (que equivaldrían a unos 320px de los 500px totales generalmente). Sin embargo si no indicamos initial-scale la página web se mostraría con el zoom adaptado para verla completa (seguramente los 500px declarados).

En webs que no llegan a ser completamente acomodables (o que no lo son en absoluto) resulta muy útil, al poder controlar el ancho de nuestro navegador. Pongamos 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 conveniente pues solicitamos al movil que no haga ningún género de zoom, mas en muchas ocasiones será mejor no utilizar 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 e indicasemos initial-scale, la web tomaría el aspecto de una pantalla de 500px mas 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 web se mostraría con el zoom adaptado para verla completa (probablemente los 500px declarados).

Por lo tanto tenemos 2 habituales configuraciones de viewport...

Para webs con adaptable design adaptado de forma perfecta a resoluciones móviles:

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

Existen otras configuraciones, como por ejemplo crear webs con un ancho de movil mas con zoom ya aplicado para mostrar solo una parte... pero 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 web.

  • Al llamar al archivo css, indicando 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 verdaderamente potentes y dejan salirse del adaptable design para cubrir aspectos muy distintos de nuestras webs. Seguidamente incluyo unos links para que puedas informarte sobre ellas en tanto que no deseo complicar este artículo con explicaciones de cosas que luego no vamos a emplear.

Para lo que nos interesa nos basta saber 2 cosas. Por un lado como se declaran estas media queries en nuestro fichero CSS y por otro como dotar a los navegadores Internet Explorer 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 vamos a ver 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, pero lo normal es utilizar 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 son ya de dominio público. Por suerte siempre existen desarrolladores muy motivados que nos crean librerías para dotar compatibilidad a estos navegadores. En este caso nos hallamos con una librería javascript que simplemente debemos agregar para IE de versiones precedentes a la 9.

Bastará cargar este script en el head de nuestra página y ya vamos a poder usar media queries sin problemas.

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

Back to top

4) Los 3 diseños base en el design responsive

Una vez hemos visto los detalles de tecnología nuevos a emplear con este género 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 adaptativos el día de hoy en día:

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

  • Grandes pantallas, donde nuestra página web cabe y sobra incluso espacio para visualizarla
  • Pequeñas o bien viejas pantallas, donde nuestra página web, para el ancho marcado no cabe y nos aparece la aborrecible barra inferior (que nadie emplea) para finalizar de ver el contenido.
  • Pantallas móviles, donde el espacio es tan pequeño que la información no se lee adecuadamente con el diseño global

Lo que debemos 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, dependiendo de como esté maquetada nuestra página puede darnos más o menos inconvenientes, pero por lo general, con el género de trabajo que se efectúa en nuestros días podemos lograr ciertas cosas.

4.1) Solucionando las pantallas grandes en adaptable design

En este aspecto generalmente no hay mayor inconveniente en tanto que nuestra página 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 al ser cargada con el zoom aplicado en la mayor parte de móviles. Si nuestra página web es un poco antigua es posible que tenga incluso algunos pixeles más habiendo sido concebida para pantallas de 1024px de ancho.

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

Esta sintaxis nos deja crear un contenedor (main) que queda centrado en la página. Además de esto con diferentes backgrounds va a 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 es posible que nuestra página web sea vista en un T.V. donde aparte de gran pantalla nos encontramos con que el usuario navega a determinada distancia del monitor. Esto requeriría de tratar estas pantallas como los móviles (con importantes cambios) pero realmente es tan poca la gente que navega en su T.V. que no acostumbran a merecer la pena estas adaptaciones. Si todavía de este modo, deseas crear tu adaptación a televisores puedes jugar con reglas similares a las de móvil que se explicarán más adelante.

4.2) Solucionando las pantallas pequeñas en responsive design

Aquí es donde comenzamos a hallar nuestros problemas. Nuestra web está lista para un ancho de pantalla y resulta que tenemos un porcentaje de usuarios significativo con resoluciones menores.

Comprobar si esto nos está sucediendo es sencillo si utilizamos Google Analytics o cualquier otro sistema de analítica de página. Ahí podremos hallar no solamente las resoluciones de pantalla de nuestros usuarios sino que partes de nuestra página web acostumbran a verse en nuestra página web. Hace no mucho disponíamos de una herramienta llamada "Google Browser size", mas está obsoleta en favor de exactamente la misma funcionalidad en Analytics.

Lo primero que tenemos que decidir es en que punto termina la pantalla pequeña y cuando comienza la móvil. Es decir, esta claro que nuestra web no cabe en resoluciones pequeñas y vamos a deber encogerla un tanto para ellas, mas 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 ciertos datos sobre los móviles:

  • Un dispositivo móvil en vertical (como más suele usarse), sin importar un mínimo su verdadera resolución, acostumbra a adoptar una resolución de dispositivo de 320px de ancho.
  • En horizontal esta resolución se adapta al tamaño real de pantalla, mas suele quedar entre los 400px y los 600px. Por poner un 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 sobre 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 desde la cual se comprende que el dispositivo debe cambiar radicalmente su visionado y probablemente funcionamiento básico. También encontraremos como algunas personas deciden visualizar encogiendo hasta los 600px de ancho y desde ahí comienzan a crear versiones intermediasentre pantalla pequeña y móvil.

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

Tu decides, yo creo que procurar abarcar todos y cada uno de los dispositivos es una insensatez. Al final lo que debemos meditar es en estilos de navegación del usuario donde solo tenemos tres.

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

Así, entiendo la "pantalla pequeña" como una mezcla de pc, móviles horizontales y tablets, lo que la vuelve levemente compleja en si misma, mas 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 transformando los bloques que tenemos en nuestros días a fin de que puedan mudar 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 antes que nos dejaban centrarla y dalre un ancho específico.

Los contenedores globales son los más fáciles 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, bastará con que en mi declaración inicial del marco de la página pase de "width" a "max-width". Además de esto y en tanto que hemos pensado en cual va a ser nuestra resolución mínima para pantallas móviles añadiremos esta como min-width para controlar que ante dispositivos verdaderamente extraños no provoquemos una página no controlada.

El resultado será el mismo para pantallas grandes y no obstante, veremos 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 efectuando en mi blog (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 principal y footer. Mi primer paso ha sido en consecuencia 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 dependiendo de la cantidad de bloques de esta clase que emplees.

Contenedores interiores

A partir de acá es donde acostumbramos a comenzar a tener problemas. Nuestra página seguramente estará formada por un layout que se dividirá en varias piezas:

  • Cabecera a cien 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 ciento de ancho

En terminante, tenemos determinados contenedores que seguramente van a tener un ancho fijo para marcar columnas en la web. Luego estos podrán haberse transformado en columnas con diferentes técnicas (floats en la mayoría de los casos, display:inline o en otros). Conque lo siguiente que debo 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, tenemos que 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 realmente 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 weblog, tuve la fortuna de que muchos contenedores ya estaban en medida porcentual. Esta es una buena costumbre de maquetación, si porcentualmente hay un valor claro es preferible emplearlo de esta manera para futuros cambios independientemente de si usamos o bien no adaptable design.

El elemento más molesto que me encontré 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 en el 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 más bien asimismo los márgenes horizontales a fin de que toda la web siga cuadrando. Asimismo hemos incluido un gran número de decimales en el cálculo para ser lo más exactos al original.

Elementos interiores sueltos que crecen demasiado

En ciertas ocasiones es posible que nos encontremos 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 muy frecuentemente va a ser más veloz y cómo elegir nuestors contenedores y prohibir que ninguno de sus elementos interiores medre más de lo que mide el propio contenedor.

En mi caso he decidido aplicar esta corrección en mi contenido principal y mi sidebar, de forma que algunos inconvenientes (sobretodo derivados de widgets como facebook y twitter) se resolviesen por si solos.

Elementos posicionados en absoluto

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

En mi caso, disponía de múltiples elementos en absoluto en la cabecera con 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 amoldemos nuestros anchos es probable que haya elementos que simplemente 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 tendremos que empezar a hacer empleo de media queries fáciles que nos permitan mudar drasticamente el CSS cuando se generen ciertas dimensiones.

Las media queries son todo un mundo, incluso hoy que no han sido completamente explotadas, se pueden hacer cosas pasmosas con ellas. Pero lo que haremos va a ser algo muy sencillo, simplemente las usaremos para marcar condiciones sobre el ancho de pantalla a partir del como nuestro CSS cambie.

Recordemos esa sintáxis:

Estas media queries, para este caso específico, en el que solo procuramos amoldar 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 a fin de que ciertos objetos quepan en el diseño ante distintas situaciones.

En mi caso, he decidido esconder ciertos elementos con resoluciones menores de 800px o 600px, puesto que no dejaban que se pudiese ver bien el contenido primordial del weblog.

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

Sencillo, ¿verdad??

Pero las media queries no solo sirven para ocultar contenido. Sino que dejan hacer modificaciones en algunos estilos. Esto es en especial útil cuando un elemento no se amolda simplemente con anchos mas incluso no deseamos hacerlo desaparecer. En ese momento le cambiamos un tanto el estilo para que se adapte a lo que buscamos.

En mi caso, me daban ciertos problemas los botones sociales a poco que bajase el ancho de página, con lo que he decidido mudar un poco 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 suelen ser un problema serio al hacer nuestras páginas más pequeñas pues tratándose de un conjunto de elementos medianamente largo que además de esto no es parte integrante de la información principal de la página (y por lo tanto no podemos dejarnos que ocupe demasiado espacio de 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 alternativa)

Por suerte podemos recurrir a diferentes recursos que solventan estos inconvenientes. A mi el que más me gusta (de momento) es el de sustituir los menús por un SELECT que cuando el usuario emplea mudar la dirección de la página que vemos por la del destino del link.

Me gusta por el hecho de que resume grandes listados en un bloque pequeño y pues al mismo tiempo, llegados a un móvil o tablet el comportamiento de los SELECT se vuelve ideal, pues permite al usuario seleccionar sus opciones de forma cómoda.

Para efectuar este cambio os recomiendo el un fácil complemento, con gran compatibilidad, al que señalamos los diferentes elementos UL de nuestros listados y el agrega antes de estos un SELECT con las características que mencionabamos. Por lo tanto solo nos queda esconder el propio UL o bien 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 forma que al bajar de 800px de ancho estos sean sustituidos por el SELECT en cuestión.

Así que he realizado 3 pasos:

1- Añadir 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 links del menú superior.

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

3- Agregar dentro de la media query conveniente el formato del select y la desaparición del propio listado.

Y ya tenemos nuestros SELECTs por debajo de los 800px de ancho.

Backgrounds de bloques

Aquí, en dependencia 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 lo tanto, en dependencia de las técnicas que hayamos empleado podemos toparnos con que nuestros fondos pierden sentido al ocultarse sus bordes.

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

Soluciónes varias:

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

En mi caso este blog es bastante sencillo 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 ciertos títulos, que he debido ir ocultando con media queries a medida que resultaban molestos
  • El background global de la cabecera, que incluía el cuadro blanco para el nombre del autor. Aquí he debido contestar el estilo en el cuadro de autor de manera que se solape un fondo con otro al empequeñecer la página

No pongo el CSS de como están resueltas estas partes exactas en mi weblog, puesto que en todos y cada caso la solución va a ser distinta.

Se acabó!

Y con todo esto ya hemos conseguido un diseño bastante adaptable. De la rigidez que teníamos con un diseño fijo en 1080px de ancho, ahora tenemos un weblog que puede ser disfrutado en un mayor número de dispositivos... pero falta algo. Faltan los móviles, donde el diseño se ve bien con estos cambios mas 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 definir una visualización adecuada para móviles. Esto es así pues el empleo que se va a hacer en estos dispositivos no va a ser exactamente 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 delimitar como queremos 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 2 opciones:

Para webs con adaptable design amoldado a la perfección a resoluciones móviles:

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

La primera es la situación ideal, pero también la que más trabajo va a darnos, porque al bajar de los quinientos-400px de ancho las columnas se vuelven de forma directa imposibles y eso significa que debemos hacer cambios drásticos en la visualización de la página web.

La segunda opción puede ser más veloz. Simplemente indicamos que el móvil se visualice a la resolución que deseemos y de este modo se comportará... proseguirá siendo nuestra web normal mas en su versión más encogida.

Pero si escogemos la segunda opción vamos a tener 2 problemas con nuestra web:

  • Por un lado el viewport es global a todos los navegadores móviles, por lo que si indicamos, por poner 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 página web a 500px que sin duda desaprovechará el espacio disponible
  • Por otro, en resoluciones de 320px de ancho, nuestros contenidos se van a ver bastante reducidos con lo que si no hacemos según que cambios va a ser inmanejable... Mas si adaptamos menús y fuentes asimismo se alterarán en la versión tablet.

En terminante, marcar un ancho fijo con viewport es la opción veloz pero 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í normalmente eliminaremos las columnas pasándolo todo a bloques de cien por cien de ancho. Eliminaremos y comprimirémos algunos elementos más y ajustaremos las fuentes para que la lectura a 320px de ancho resulte cómoda en dispositivos de pequeña pantalla.

Eliminando columnas:

Vamos a poner nuestras columnas una detrás de otra. Existen entonces dos posibilidades.

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

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

b. Que no se encontraran ordenadas.

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

Imáginemos esta estructura:

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

En mi caso me encontré en este segundo caso, por lo que en móvil he tenido que recurrir a posiciones absolutas. Además 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. Cuando cambiamos a las pequeñas pantallas de móvil en vertical estas acostumbran a no ser las más cómodas para la lectura: Ocupan demasiado ancho, destacan demasiado los titulares y el texto del cuerpo suele ser bastante difícil de leer. Por ende es conveniente hacer una revisión de todas para ajustar la visualización a una versión cómoda.

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

Otros ajustes

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

En mi caso he tenido que eliminar completamente el bloque de autor, pasar a horizontal los elementos del sidebar y mover algunos márgenes de lugar.

Con todo esto ya tendremos 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 probar lo que vamos haciendo y los cambios que vamos provocando. Aquí me agradaría compartir con vosotros dos recursos:

1. Para probar en el navegador:

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

Para ello tenemos 2 opciones:

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

2. Evitando la caché movil

Los móviles en su anhelo por no pedir más datos de los estrictamente precisos cachean 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 difícil y algunos navegadores nisiquiera tienen la opción de desactivar esta caché.

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

  • Usar variables en la llamada CSS. O sea en lugar de llamar a "/styles.css" vamos a llamar a "/styles.css?version=xxxx" mudando en cada caso el numero de versión para que la url sea distinta y por lo tanto no se use caché
  • Trabajar en el navegador. Subiendo un tanto la resolución mínima móvil (420px-450px) podremos provocar que esta sea vista en nuestro navegador cuando lo encojamos lo suficiente. Asimismo utilizando herramientas de redimensionado de página podemos provocar estas acciones. Esto resultará sin duda más cómodo para muchas pruebas mas no evita probar finalmente 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 suelen aplicarse al adaptable design mas aplicándolas a una web existente en lugar de al desarrollo de webs nuevas.

¿Hemos hecho una web con adaptable design?

La contestación es clara: NO. Hemos hecho más adaptativa una web que no fue creada para serlo. En consecuencia hemos cometido muchos errores a lo largo del 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 transmitida al usuario
  • Seguramente no hemos logrado una visualización perfecta en todos y cada uno de los casos. Hemos mejorado la que había, mas el resultado no es el mismo que si hubiesemos planeado todo esto de antemano
  • Por último, he podido llegar al final con esta web, mas muchas webs, en dependencia de la maqueta de la que broten no podrán 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 adaptable 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 a fin de que termine de tener sentido para todos. No se trata de ser "genial" y poder mostrar una web que se encoje y se adapta ligerísimamente al móvil sino que nuestro proyecto debería haber surgido bajo el paradigma de ser multidispositivo, valorando en todos y cada caso su usabilidad.

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

¿Te agradó este blog post? Puedes proseguir sus comentarios a través de , o realizar desde tu blog.

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