Passa al contingut principal

Mejorando la usabilidad de un sitio web con jQuery

Mejorando la usabilidad de un sitio web con jQuery:
Nuevamente tenemos a José Vicente Carratalá con un excelente artículo en exclusiva para video2brain.
El objetivo de este artículo es demostrar cómo la tecnología puede contribuir fácilmente a la mejora de la usabilidad de un sitio web.
Al planificar el diseño de un sitio web, uno de los principales problemas con el que nos encontramos es el de la anchura del sitio con respecto a las múltiples resoluciones de pantalla de nuestros usuarios.
En el caso que trato en este artículo, he revisado en primer lugar el analytics del sitio web www.comotocar.es, para revelar las siguientes resoluciones de pantalla:
Analytics

La idea, teóricamente, es estudiar las resoluciones con las que entran mis usuarios para crear una resolución óptima. Sin embargo, en la práctica, vemos cómo las resoluciones con las que entran los usuarios del sitio web son tan dispares como para ir desde 1920 x 1080 hasta 1024 x 768. Es decir, una variación de prácticamente el 100% en el eje X horizontal.
Al probar el sitio en diferentes resoluciones, el resultado es el siguiente:

A 1920 x 1080 el espacio sobrante en pantalla es demasiado
A1920x1080En las resoluciones de 1280 x 720 y 1360 x 768 es donde el sitio web mejor se ve, ya que he apostado por un término medio
Comparativo 1280x720

Sin embargo, en resoluciones inferiores, el contenido queda gravemente cortado
Comparativo 800x600
Evidentemente, reducir el tamaño de mi maquetación perjudicaría a los usuarios de pantallas más grandes, y viceversa. Así pues, ¿qué puedo hacer para que mi maquetación se vea igual en todos los monitores?
Ya sabemos que con CSS3 disponemos del parámetro «media» que nos permite adaptar nuestra web a varios rangos de pantalla. De hecho yo soy un gran defensor del uso de «media» en CSS3, como pudisteis ver en el eSeminar video2brain Desarrollo de webapps para dispositivos móviles, sobre todo para crear maquetaciones para múltiples dispositivos. Pero este caso es ligeramente diferente, ya que no estoy consierando múltiples dispositivos, sino múltiples resoluciones de un mismo dispositivo (una pantalla de ordenador). CSS3 media sigue siendo una opción válida, pero nos obliga a crear varios archivos CSS, lo cual, en el fondo, no deja de ser una duplicación o triplicación de trabajo.
Para este caso he optado por una solución diferente:

Voy a usar la nueva función de CSS3 transform:scale. Mediante transform:scale, puedo ampliar y disminuir el tamaño de todo mi sitio web de manera uniforme, sin tener que reprogramar todo el CSS para cada resolución. De esta forma, introduciendo una simple instrucción CSS, puedo ampliar y disminuir el tamaño de la maquetación.
En mi CSS introduzco (desarrollando en principio para Chrome/Safari):
html{



–webkit-transform-origin:50% 0%;

–webkit-transform:scale(1.5,1.5);



}
Y esto hace que la página se vea un 50% más grande en cualquier monitor, lo que beneficia por ejemplo a la resolución de 1920 x 1080, ya que ya no se pierde tanto espacio alrededor.

Sin embargo, estoy perjudicando gravemente al resto de resoluciones.
Podría poner esto:
html{



font-family:arial;

–webkit-transform-origin:50% 0%;

–webkit-transform:scale(0.5,0.5);



}
Lo que haría que la web se viera correctamente en 1024 x 768 e incluso en 800 x 600, pero perjudicaría gravemente a las resoluciones superiores.
Lo que voy a hacer, por tanto, es hacer que ese factor de escala sea dinámico. ¿Cómo lo puedo hacer? Por ejemplo con Javascript/jQuery.

Elimino el CSS de transform, y en la etiqueta script de javascript escribo:
var x;

x=$(document);

x.ready(inicio);

function inicio(){

var y;

y=$(«html»);

y.css(«-webkit-transform-origin»,«50% 0%»);

y.css(«-webkit-transform»,«scale(0.5,0.5)»);

}
Tras lo cual, he conseguido pasar el código CSS a Javascript — jQuery.

A continuación, creo una regla de tres, en la que pongo:
var x;

x=$(document);

x.ready(inicio);

function inicio(){

var y;

y=$(«html»);

y.css(«-webkit-transform-origin»,«50% 0%»);

y.css(«-webkit-transform»,«scale(«+(window.innerWidth/1400)+»,»+(window.innerWidth/1400)+»)»);

}
Con lo que habremos conseguido que la maquetación se vea igual en cualquier resolución de pantalla, usando Chrome o Safari.

La pregunta más evidente que puede surgir es: ¿De dónde sale el parámetro 1400? Respuesta: La web original estaba diseñada para verse óptimamente en una pantalla de 1400 x 800. Por tanto, si window.innerWidth es igual a 1400, el factor será 1400/1400=1, con lo que la web se escalará en el resto de resoluciones para verse como originalmente se veía a 1400 x 800 píxeles. Evidentemente podemos jugar con este valor para personalizar la escala de visualización.
El siguiente paso es establecer compatibilidad con el resto de navegadores:
var x;

x=$(document);

x.ready(inicio);

function inicio(){

var y;

y=$(«html»);

y.css(«-webkit-transform-origin»,«50% 0%»);

y.css(«-webkit-transform»,«scale(«+(window.innerWidth/1400)+»,»+(window.innerWidth/1400)+»)»);

y.css(«-moz-transform-origin»,«50% 0%»);

y.css(«-moz-transform»,«scale(«+(window.innerWidth/1400)+»,»+(window.innerWidth/1400)+»)»);

y.css(«-o-transform-origin»,«50% 0%»);

y.css(«-o-transform»,«scale(«+(window.innerWidth/1400)+»,»+(window.innerWidth/1400)+»)»);

y.css(«-ms-transform-origin»,«50% 0%»);

y.css(«-ms-transform»,«scale(«+(window.innerWidth/1400)+»,»+(window.innerWidth/1400)+»)»);

}
El único problema que nos quedaría por solucionar, es añadir compatibilidad con versiones anteriores a Internet Explorer 9, que no soportaban ningun tipo de transform:scale.
En este caso estamos de suerte, ya que Microsoft soporta una propiedad no estándar de CSS llamada «zoom», que también soportan Chrome y Safari, pero no Firefox y Opera.
De esta manera, podríamos usar Zoom para Chrome, Safari e Internet Explorer, y transform:scale para Firefox y Opera, quedando asi:
var x;

x=$(document);

x.ready(inicio);

function inicio(){

var y;

y=$(«html»);

y.css(«zoom»,(window.innerWidth/1400));

y.css(«-moz-transform-origin»,«50% 0%»);

y.css(«-moz-transform»,«scale(«+(window.innerWidth/1400)+»,»+(window.innerWidth/1400)+»)»);

y.css(«-o-transform-origin»,«50% 0%»);

y.css(«-o-transform»,«scale(«+(window.innerWidth/1400)+»,»+(window.innerWidth/1400)+»)»);

}
A partir de este momento, por tanto, podremos comprobar que la web se visualiza con las mismas proporciones independientemente de la resolución de pantalla que tengan nuestro usuarios, ajustándose automáticamente en monitores pequeños, y ampliándose automáticamente en monitores de gran resolución.
En definitiva, lo que hemos conseguido con estas 11 líneas de Javascript+CSS es posibilitar que una web se visualice exactamente igual independientemente de la resolución del navegador con el que se acceda, demostrando de esta manera dos cosas:
1.-La programación dinámica, bien usada, sirve para mejorar la experiencia del usuario.

2.-El coste de desarrollo e implementación de mejoras en la usabilidad de un sitio web, como la que acabamos de ver, no tiene por que ser elevado.
Cursos relacionados: Usabilidad, jQuery, HTML5 y CSS3.

Comentaris

Entrades populars d'aquest blog

Learn Composition from the Photography of Henri Cartier-Bresson

“Do you see it?” This question is a photographic mantra. Myron Barnstone , my mentor, repeats this question every day with the hopes that we do “see it.” This obvious question reminds me that even though I have seen Cartier-Bresson’s prints and read his books, there are major parts of his work which remain hidden from public view. Beneath the surface of perfectly timed snap shots is a design sensibility that is rarely challenged by contemporary photographers. Henri Cartier-Bresson. © Martine Franck Words To Know 1:1.5 Ratio: The 35mm negative measures 36mm x 24mm. Mathematically it can be reduced to a 3:2 ratio. Reduced even further it will be referred to as the 1:1.5 Ratio or the 1.5 Rectangle. Eyes: The frame of an image is created by two vertical lines and two horizontal lines. The intersection of these lines is called an eye. The four corners of a negative can be called the “eyes.” This is extremely important because the diagonals connecting these lines will form the breakdown ...

El meu editor de codi preferit el 2024, que això ja se sap que va canviant 😄

Visual Code Visual Code és un editor de codi font lleuger, però potent que s’executa al teu escriptori i està disponible per a Windows, macOS i Linux. Compta amb suport integrat per a JavaScript, TypeScript i Node.js i té un ric ecosistema d’extensions per a altres llenguatges i entorns d’execució (com C++, C#, Java, Python, PHP, Go, .NET).  És una eina ideal per a desenvolupar i depurar aplicacions web i en el núvol. Per què Visual Code? Visual Code té molts avantatges com a editor de codi font, com per exemple: És gratuït, ràpid i fàcil d’instal·lar i actualitzar. Té un ampli ecosistema d’extensions que et permeten afegir funcionalitats i personalitzar la teva experiència de desenvolupament. Té un suport integrat per a molts llenguatges i entorns d’execució, i et permet depurar i executar el teu codi des del mateix editor. Té una interfície senzilla i elegant, amb diferents temes i modes de visualització. Té un sistema de sincronització de configuracions que et permet guardar les...

Las Mejores Aplicaciones Gratis para iPad de 2012

Las Mejores Aplicaciones Gratis para iPad de 2012 : ¿No tienes ni un duro? No te preocupes, pues hoy os traemos una extensa selección de las mejores apps gratuitas que puedes conseguir en la App Store para que llenes tu iPad de calidad, sin gastar nada de nada.   ¿Estás buscando juegos o apps gratis para tu iPad? En la App Store hay más de 500,000 apps y juegos, y una gran cantidad de ellos está disponible de forma totalmente gratuita. Aquí vamos con la selección de las mejores Apps gratis para iPad (todos los modelos), organizada por categoría. ¿Estás preparado? Las Mejores Apps Gratis de Redes Sociales para iPad Nombre Facebook Gratis Categoría Redes sociales Facebook es la red social más famosa del mundo , con casi mil millones de usuarios. Su app para iPad ha tardado, pero aquí está. Nombre Twitter Gratis Categoría Redes sociales Twitter es la red de microblogging por excelencia. La forma más rápida y directa de informar y mantenerse informado de las cosa...