Archivado por ‘Diseño-web’ Categoría

En El Webmaster comentan unos pocos trucos expuestos en Sentido web, originalmente mostrados en Codeitred, acerca de como optimizar la carga de nuestro sitio web.

De los allí vertidos discrepo en la implementación de uno de ellos. La precarga de imágenes creo que es mejor hacerla ocultándolas sin especificar dimensiones ya que así evitamos trabajo extra del ordenador del cliente. Además tampoco generamos un elemento que, aunque tenga unas medidas mínimas como recomiendan de 1×1, puede alterar el orden o incluso mostrarse como pequeños puntos en algunos navegadores.

Para usar este método pongo al final de la página index y antes del cierre del body:

  1. <img class="hideimage" src="images/nombre_de_la_imagen.jpg" alt="texto_alternativo" tit="titulo_de_la_imagen"/>

esto lo repito con todas las imágenes que quiero precargar.

En el CSS:

  1. .hideimage {
  2.     display: none;
  3. }

Luego en cada página cada imagen tendrá su propio ID que será referenciado en el CSS:

  1. #foto2 img {
  2.     position: relative;
  3.     top: 0;
  4.     left:-5%;
  5.     width:100%;
  6. }

Al no haber establecido antes un tamaño basta poner el witdth en 100% para que se establezca automáticamente el height en 100%, de esta manera se redimensiona la imágen de acuerdo al tamaño de la pantalla. Aunque también es posible darle las medidas exactas.

Esta técnica está aplicada en www.axiscentreclinic.com

Pronto estaré haciendo cambios en el servidor por lo que la web y el blog se pueden quedar innoperativos unas horas, espero que la transición no sea engorrosa y todo vuelva a estar como está ahora.

En diseño web es de gran importancia el tiempo de descarga que necesita la web que diseñemos para mostrarse completa y operativa. Algunos disponemos de banda ancha y la diferencia entre que una web cargue en 4 segundos o en 1 no es muy apreciable. Pero en conexiones lentas, que no sean de banda ancha o que tengan un tiempo de respuesta muy lento por alguna razón, este tiempo se puede multiplicar por 10, 20 ó hasta por 50.

La “inmediatez” que implica el uso de internet en el sentido de que lo que busco lo quiero ya, en parte porque soy yo quien lo estoy buscando activamente -no como en el caso de la televisión que estoy esperando a recibir lo que sea que vaya a salir-, conlleva que si lo que pido tarda demasiado tengo mucho de donde escoger a pocos clicks. Por esto es necesario implementar sistemas que reduzcan ese tiempo de espera, en el caso del diseño web reutilizando recursos que son comunes en nuestro sitio en sus diferenes páginas. Estos se almacenan en el caché del navegador o del servidor y podemos mejorar este almacenamiento de manera sencilla, así esos archivos solo se descargan en la primera visita.

Tenemos por ejemplo un sitio con sus diferentes páginas web y sus hojas de estilo. Lo mas común es que podamos usar scripts php en nuestras páginas aunque dentro de estas no haya que hacer ningún tipo de consulta a bases de datos, ni cálculos, ni gráficas, etc. Estos scripts se ejecutan en el servidor y, para el caso que nos interesa, informarán al navegador del cliente sobre el estado de los recursos que componen la página.

Si tenemos una hoja de estilos .css que no cambiará en mucho tiempo podemos minimizarla, comprimirla y almacenarla en caché, esto mismo se puede hacer con los archivos de javascript que usemos. Así en futuras visitas o en las diferentes páginas que componen nuestro sitio, y usan la misma .css o .js, no será necesario descargar desde el servidor estos archivos cada vez.

Para minimizar la css hay varios servicios gratuitos, entre ellos Css compressor, de Lottery post. Tan sencillo como copiar el código de la css, pegar en Input, picar en Compress y seleccionar todo, copiar y pegar en un documento nuevo de nuestro editor de css. Damos el mismo nombre distinguiéndolo con min, por ejemplo estilo.min.css y guardamos.

Para minimizar los archivos de javascript seguimos los mismos pasos pero usamos el servicio de JS Minifier. En este caso deberemos borrar el código de ejemplo que viene en Code que es donde pegamos nuestro código js. Es recomendable dejar el nivel en “conservative” para evitar errores. Guardamos igual, por ejemplo efectos.min.js.

Para comprimir y almacenar en caché lo hacemos con un solo script:

  1. < ?php
  2. ob_start ("ob_gzhandler");
  3. header("Content-type: text/javascript; charset: UTF-8");
  4. header("Cache-Control: public, max-age=31536000");
  5. $offset = 60 * 60 * 24 * 30 ;
  6. $ExpStr = "Expires: " .
  7. gmdate("D, d M Y H:i:s",
  8. time() + $offset) . " GMT";
  9. header($ExpStr);
  10. ?>

Es imprescindible que este script vaya al comienzo del archivo antes de cualquier otra cosa. El ob_start (“ob_gzhandler”); es el que se encarga de comprimir. El resto del script es el que crea la cabecera para que el archivo sea almacenado en caché, para hojas de estilo usaremos text/css. El Cache-control: public dice al navegador que será útil para cualquier página del dominio que lo solicite, max-age=31536000 establece su fecha de caducidad en un año -en segundos-. El Expires establece su próxima revisión en un mes. Ahora el archivo lo guardamos como estilo.min.css.php o efectos.min.js.php en cada caso.

Ahora solo hace falta llamar a nuestro archivos desde el head de la misma manera pero con los nuevos nombres. Los javascript es mejor ponerlos al final de la página, justo antes del cierre de la etiqueta body, así se arma la página antes de empezar a cargar el javascript, lo que da la sensación de que termina antes de descargar. Nuestras páginas ya no deberán terminar en .htm o .html sinó en .php para que el código php introducido sea ejecutado.

Hola de nuevo, muchas cosas me han tenido entretenido los últimos meses y creo que ahora me podré poner al día un poco en mis asuntos del blog. Entre actualizar las webs que llevo (mejorando su diseño, tiempo de descarga, SEO, nuevas imágenes, etc.) y unos cuantos problemas con el ordenador que ya están resueltos, se me pasó el tiempo y he tenido que dejar de lado el blog justo en sus comienzos. De algunos de estos asuntos les comentaré sobre cosas que creo que pueden ser interesantes.

Via CSSBlog he encontrado una pequeña guía sobre el uso de las fuentes en la web, la cual remite a información de webtaller.

Discrepo en algunas cosas basándome en mi experiencia y en mucha información que he encontrado en internet y libros sobre diseño gráfico y web.

Por un lado está el contraste, el cual para mí no debe ser demasiado fuerte. Lo primero que se viene a la cabeza en cuanto al contraste es el blanco y negro. Este queda bien en los libros, pero en el ordenador hay que sumarles el brillo que aporta la pantalla. Algo que no tiene el papel a no ser que sea así y en ese caso ya es un defecto de diseño, o un error del diseñador que lo escogió.

Basta con elegir un ligero tono pastel del color que se quiera, ya sea para el fondo o para el texto en caso de fondos muy oscuros. En cuyo caso habrá que aumentar un poco el tamaño de fuente o su espesor para que el fondo no se la coma.

Coincido en esto con los de CSSBlog, los colores deben tener una armonía. Pero esta debe ser preferiblemente análoga o monocroma, es decir, entre colores muy parecidos o el mismo color. Acercándose uno al negro y el otro al blanco, texto y fondo o viceversa. Evitando en lo posible las armonías complementarias que provocan vibración tonal. Como es el caso del naranja-violeta o magenta-verde, por ejemplo.

El interlineado y el interletrado deben ser algo que no se debería tocar a no ser que se quiera hacer algo especial. Ya quien diseñó la fuente estudió esas características para hacerlas adecuadas a la lectura. En cuanto al largo de los renglones diversas investigaciones han dado como resultado que un largo de 62-66 caracteres es el mas apropiado.

Salirse de estas bases es posible pero para casos puntuales, publicidad, logotipos, titulares impactantes, etc., pero no es recomendable para bloques de texto. Con efectos, contrastes extraños, interletrados e interlineados especiales, etc. en textos largos provocamos dificultad de lectura y cansancio visual. Lo que deriva en abandono de la web, lo primero que debemos evitar.

He trabajado varios días poniendo a punto un plugin para jQuery que me facilite las cosas en cuanto a incrementar la accesibilidad de las web. Así que pongo a disposición de todos un archivo javascript que crea un recuadro dinámicamente con -a a a+ para cambiar el tamaño de fuente en pantalla. En la primera visita calcula el tamaño de fuente inicial de acuerdo a la resolución para presentar el texto en la misma proporción en relación al tamaño de pantalla. Así en resoluciones mayores la fuente se muestra adecuadamente.

Una de las cosas que me preocupan cuando diseñas una web es que no sabes en que resolución de pantalla la van a ver. Al final unos terminan con un tamaño de letra grandísimo y otros, por el contrario, diminuto. Con este plugin estableces un tamaño de letra proporcional a la pantalla, un tamaño mínimo y uno máximo, y puedes cambiar el diseño del contenedor de las -a a a+ y de estos enlaces.

Como esto se crea dinámicamente no se muestra a aquellos que no tienen javascript activado. Basado en el font-resize de text-resizing-with-jquery, funciona con jQuery (yo lo he probado con la 1.2.6 pero creo que funcionará con anteriores) y con el plugin de cookies Cookie de Klaus Hartl.

Además almacena en una cookie el tamaño escogido para mantenerlo en la navegación y futuras visitas.

INSTALACIÓN: Antes del final del head poner estas líneas:

  1. <script src="jquery-1.3.1.js" type="text/javascript"></script>
  2. <script src="jquery.cookie.js" type="text/javascript"></script>
  3. <script src="fontReSizer.js" type="text/javascript"></script>

Podeis bajarlo desde aquí:
fontresizer

Para los que lo quereis en inglés:
fontresizer_en

Podeis encontrarlo también en la dirección del proyecto:
jQuery plugins fontReSizer

Aquí podeis verlo en acción:
www.jhmorales.es
www.axiscentreclinic.com
www.centrecapi.es
www.laranda.es

Hala, a disfrutar. Ya me contareis que os parece y si hay que arreglar algo.

En los últimos años el ancho de la resolución de la pantalla se ha ido incremantando de 800 a 1024, a 1280, a 1440, a 1600px, y de repente ahora se hacen populares los ultraportátiles o netbooks con 800. Las webs usualmente se ven igual en todas las resoluciones, ya sea por tener un diseño estático o líquido, mas no así el tamaño de la fuente usada que va disminuyendo proporcionalmente a medida que aumenta la resolución y terminamos dejándonos los ojos.

Con esto en mente es conveniente usar un método que facilite el cambio del tamaño de fuente o texto, que sea visible en pantalla y que además también reaccione igual al efecto de cambio de tamaño que causa. En algunas de mis webs he usado un código de jQuery que encontré en text resizing with jquery, al que le hice algunos cambios para tener las características antes mencionadas. Una de las partes que hice fue la creación de un método que adapte el tamaño de fuente a la resolución de la pantalla del nuevo visitante de la web.

El código fontSize.js usa la librería de javascript jQuery, y el plugin de cookies jquery.cookie.js, que debemos llamarlos en el head así:

  1. <script src="jquery-1.2.6.js" type="text/javascript"></script>
  2. <script src="jquery.cookie.js" type="text/javascript"></script>
  3. <script src="fontSize.js" type="text/javascript"></script>

Luego dentro de la página debemos poner los enlaces:

  1. <div id="changeFont">
  2. <p>
  3. <a href="#" class="decreaseFont">-a</a>
  4. <a href="#" class="resetFont">a</a>
  5. <a href="#" class="increaseFont">a+</a>
  6. </p>
  7. </div>

En el css les damos el estilo que mejor se adapte al diseño de nuestra web. Lo he aplicado en un principio a dos de mis páginas (www.centrecapi.es y www.laranda.es). Ha sido probado con éxito en windowsXP ff3, ie7, opera9.65, safari3.1, chrome 1 y fennec; en windowsVista ie8b2; windows98 ie6, ff2 y opera9.1; macOsX 10.46 safari2; Ubuntu 8.04 ff3 y Konqueror. Las web tienen un tamaño de fuente de 62.5% en el css y a los diferentes elementos se les asigna el tamaño de fuente en ems.

El código lo que hace es crear una función que esté operativa al terminar de cargar la página e inmediatamente activar un botón invisible que usará el tamaño de fuente almacenado en la cookie, o el botón de tamaño inicial para nuevos visitantes.

Primero se añade un botón invisible para activarlo en usuarios que ya han visitado la web, a este no hay necesidad de darle estilo. Luego se encuentra el ancho de la resolución de pantalla y se calcula el tamaño de fuente base de acuerdo a él. Luego se verifica si existe una cookie del tamaño de fuente usado en visitas anteriores, si no existe se usa el tamaño antes calculado.

Se crean las funciones para el botón de decremento (x0.9), el de tamaño base (el calculado), el de incremento (x1.1) y el del botón invisible para usuarios antiguos al que se le da el tamaño almacenado en la cookie. Por último se comprueba si existe la cookie para activar el botón invisible o si no para activar el de tamaño base.
Le he traducido los comentarios para entenderlo mejor.

  1. $(function(){
  2.     var sitefunctions = {
  3.         textresize: function(){
  4.   $("#changeFont p").append("<a href='#' class='font'></a>");//creamos botón de usarios antiguos
  5.   $(".font").css("visibility","hidden").css("font-size",0);//lo hacemos invisible
  6.             // mostramos los enlaces para cambio de tamaño
  7.             $("#changeFont").show();
  8.             var $cookie_name = "sitename-FontSize";
  9.             var originalFontSize = $("html").css("font-size");//código original
  10.    var screenWidth = screen.availWidth;
  11.    if (screenWidth&lt;850) {
  12.             originalFontSize = screenWidth / 48;//tamaño para pantalla pequeñas
  13.    }
  14.    if (screenWidth&lt;1100) {
  15.             originalFontSize = screenWidth / 60;//tamaño para navegadores estandar con ancho de 1024
  16.    }
  17.    else {
  18.             originalFontSize = screenWidth / 72;//tamaño para navegadores estandar con ancho mayor de 1024
  19.    }
  20.             if ($.browser.msie) {
  21.    if (screenWidth&lt;850) {
  22.             originalFontSize = screenWidth / 48;//tamaño para ie a 1024
  23.    }
  24.    else {
  25.             originalFontSize = screenWidth / 56;//tamaño para ie mas de 1024
  26.    }
  27.             }
  28.             if ($.browser.safari) {
  29.                 originalFontSize = screenWidth / 52;//tamaño para safari
  30.             }
  31.             if ($.browser.opera) {
  32.                 originalFontSize = screenWidth / 50;//tamaño para opera
  33.             }
  34.             // si existe la cookie cargamos el valor guardado, si no la creamos
  35.             if ($.cookie($cookie_name)) {
  36.                 var $getSize = $.cookie($cookie_name);
  37.                 $("html").css({fontSize: $getSize + ($getSize.indexOf("px") != -1 ? "" : "px")}); // apaño para el error de doble "pxpx" en IE (siempre dando la nota)
  38.             }
  39.             else {
  40.                 $.cookie($cookie_name, originalFontSize);
  41.             }
  42.             // boton tamaño base
  43.             $(".resetFont").bind("click", function(){
  44.                 $("html").css("font-size", originalFontSize);
  45.                 $.cookie($cookie_name, originalFontSize);
  46.             });
  47.             // boton incremento
  48.             $(".increaseFont").bind("click", function(){
  49.                 var currentFontSize = $("html").css("font-size");
  50.                 var currentFontSizeNum = parseFloat(currentFontSize, 10);
  51.                 var newFontSize = currentFontSizeNum * 1.1;
  52.                 if (newFontSize&lt;40) {
  53.                     $("html").css("font-size", newFontSize);
  54.                     $.cookie($cookie_name, newFontSize);
  55.                 }
  56.                 return false;
  57.             });
  58.             //boton decremento
  59.             $(".decreaseFont").bind("click", function(){
  60.                 var currentFontSize = $("html").css("font-size");
  61.                 var currentFontSizeNum = parseFloat(currentFontSize, 10);
  62.                 var newFontSize = currentFontSizeNum * 0.9;
  63.                 if (newFontSize>12) {
  64.                     $("html").css("font-size", newFontSize);
  65.                     $.cookie($cookie_name, newFontSize);
  66.                 }
  67.                 return false;
  68.             });
  69.             //boton usuarios antiguos
  70.             $(".font").bind("click", function(){
  71.                 var $getSize = $.cookie($cookie_name);
  72.     var prevfontSize = $getSize + ($getSize.indexOf("px") != -1 ? "" : "px");// apaño para el error de doble "pxpx" en IE (siempre dando la nota)
  73.                 $("html").css({fontSize: prevfontSize});
  74.                 $.cookie($cookie_name, prevfontSize);
  75.             });
  76.         }
  77.     };
  78.     $(document).ready(function(){
  79.         sitefunctions.textresize();
  80.         if ($.cookie("sitename-FontSize")) {
  81.             $(".font").click();//usa el valor de tamaño de fuente almacenado en cookie
  82.         }
  83.   else {
  84.             $(".resetFont").click();//usa el tamaño calculado según ancho de resolución
  85.   }
  86.     });
  87. });

En originalFontSize = screenWidth / xx estos valores van bien generalmente, pero el tamaño se puede cambiar según la web. Puede ser que haya que hacer varias pruebas para encontrar el punto preciso.

La interfaz mas usada siempre tiene una cabeza y un pie. Su cuerpo se divide en dos o tres columnas teniendo una de ellas mayor ancho que las demás, siendo ésta la que alberga el contenido con mas profundidad. Como veis el ser humano en principio crea todo a su imagen y semejanza. El diseñador tiende basicamente a representar la interfaz como un reflejo de lo humano para hacerla mas asequible.

Luego con el tiempo y experiencia se desarrollan otros modelos de presentación que conllevan mas creatividad, que diluyen ese reflejo en narraciones visuales mas elaboradas y que mantienen, en lo posible, los elementos básicos necesarios para el adecuado funcionamiento de la interfaz.

En un principio la interfaz de escritorio de Apple HyperCard de los Macintosh dió el primer paso al imitar el Rolodex, siguió luego el diseño de los Macintosh 128 con una interfaz para el ordenador como metáfora del escritorio, buscando así un entorno de trabajo que imitara al que el usuario ya estaba acostumbrado.

Hay una necesidad imperante del usuario de manejar cosas que conoce, papel, reglas, lápices, botones, cajas, etc. El ordenador es una prótesis que nos permite la manipulación directa de los objetos virtuales que tenemos en la interfaz imitando la realidad. Esta misma concepción se extendió a los programas usados para la creación de documentos, presentaciones, gráficos y, por supuesto, las páginas web.

En Diseño de nuevos medios de comunicaciónTom Elsner, de la asesoría de diseño británica Bureau for Visual Affairs, afrima:

“Hacer un sitio web es como fabricar un objeto real”…

Objeto que tiene sus mecanismos, botones, pestañas, secciones, etc. que se espera que el usuario controle según sus necesidades. Por ello además de crear una estructura en función del contenido, es necesario tener en cuenta la ergonomía de los objetos que allí funcionan y de todo el objeto en sí.

Vemos en el tiempo como se ha evolucionado de una interfaz simple, a imagen de un texto impreso, hasta la tendencia actual a mostrar tres dimensiones. Ahora encontramos botones que se presionan, pestañas y fotografías que hacen sombra, efectos que imitan el paso de hojas de revista (pageflip), gráficos en 3D, uso de css para dar sensación de profundidad, etc.

Somos animalitos de costumbres y si queremos que nuestras webs funcionen debidamente hay que implementar objetos usables que por su forma y mensaje indiquen la acción que se espera de ellos, la jerarquía que tienen en el conjunto y los posibles caminos que hay disponibles.

En cualquier caso hay que mantener una estructura que permita diferenciar las diferentes partes y una forma en ellas que indique su función. La falta de estructura es una ausencia de significados. El usuario no soporta el caos, busca un orden que conecte las diferentes partes para tener una unidad espacial. Y si no lo encuentran se buscan otro camino ya que hay millones posibles a un solo clic.

Ya hablaremos de estructuras y jerarquías mas adelante, que este bullir de ideas en la cabeza hace que el mensaje sea mas largo de lo que debiera.

Quizás una de las primeras premisas de diseño que se encuentra quien se enfrenta a hacer una nueva página o proyecto web es la resolución a la que se va a presentar esta al usuario. Es problemático hacer la página con unas dimensiones fijas debido a la gran variedad de resoluciones que existen, lo que provoca que en la resolución escogida se vea bien pero en otras mas pequeñas no quepa y en mayores quede demasiado espacio libre.

Esta forma de diseñar era la usada antes cuando todo se maquetaba en tablas, aunque todavía hay algunos que montan las páginas de esta manera y ciertos programas lo hacen cuando se elabora el diseño en forma gráfica (aptos para vagos, y ya sabemos que el perezoso trabaja doble y mal). En cambio ahora el uso de los divs o cajas ha permitido usar bloques de objetos que se acomodan a la ventana en la que se presentan, ya sea por medidas en porcentajes, superposición de capas o por el uso de floats sin restricción.

Aunque la resolución más usada ahora es la 1024×768 como lo podemos comprobar aquí, aquí, aquí y aquí, nos encontramos con un mercado creciente tanto de portatiles con pantallas panorámicas como de grandes pantallas -panorámicas también- que se pueden usar como televisores, en ambos casos con posibilidad de mostrar altas resoluciones, y por otro lado del boom de los ultraportálies o netbooks que en gran medida regresan a resoluciones de 800×600 u 800×480.

El debate ahora está abierto entre usar un diseño líquido o uno elástico (términos, muy descriptivos por cierto, que trataré en otro artículo). El uso de los divs y la versatilidad que puede plantearse en el diseño de cajas móviles nos dan mas libertad a la hora de maquetar nuestras páginas pero nos obliga a tener en consideración lo que se incluirá en cada caja y la relación con las demás, esto es algo que requerirá un análisis mas sesudo (en todo se puede profundizar tanto como se quiera).

Para mi lo primordial para poder controlar el aspecto es poder tener un sistema que permita comprobar el diseño en diferentes resoluciones, así podemos corregir errores y comportamientos extraños (lease IE), para lo cual disponemos de varias herramientas. En mi caso uso, y recomiendo, tres gratuitas:

  • ToggleRes nos permite un cambio rápido entre dos resoluciones que se pueden configurar.
  • MultiRes nos permite cambiar la resolución a escoger entre una amplísima variedad incluyendo la tasa de refresco. Hay que configurar la pantalla para que se vea bien cada vez que se escoge una nueva resolución.
  • La extensión Web Developer para los usuarios de Firefox, la cual trae un botón Resize que nos permite adicionar las resoluciones de pantalla que queremos representar. No cambia la resolución real de la pantalla, solo la de la ventana, por lo que tenemos que poner la resolución en la pantalla más alta a la que queremos trabajar y luego ir escogiendo en Resize para mostrar las resoluciones mas pequeñas en la ventana.

Otro asunto que trataré un poco por encima luego es el de los dispositivos móviles para los que tenemos también formas de representarlos en el ordenador, así podemos comprobar como se ven nuestras páginas en ellos.