Desarrollo Web
El Patrón F, La Forma En Que Una Página Web Es Vista Por Sus Usuarios
Los usuarios que se enfrentan al contenido de una página web, utilizan un movimiento en forma de F para buscar la información que requieren. Ese es el resultado del estudio realizado por Jacob Nielsen, publicado en su sitio useit.com.
El estudio se basó en el análisis del movimiento ojos de 232 usuarios enfrentados a 3 tipos de páginas comunes en un sitio web corporativo: un artículo, la descripción de un producto y un resultado de búsqueda.
Planos de Escaneo de Páginas
La imagen muestra en colores cuales son las áreas más vistas por los usuarios. El grado de atención es mayor en las áreas rojas, decreciendo en las amarillas (atención media) y azules (atención baja).
Algunas implicancias de este comportamiento para el arte del diseño web son:
- Los usuarios no leen el texto de la página en forma exhaustiva. Más bien realizan un escaneo de la página
- Los primeros 2 párrafos deben mostrar la información más importante, ya que existen muchas probabilidades de que estos párrafos sean leídos con más detención
- Se deben empezar los subtítulos, párrafos y elementos de lista con palabras que llamen a la lectura del resto del elemento, ya que es más probable que los usuarios lean las 2 primeras palabras que las 3 primeras
El artículo completo lo puedes leer en F-Shaped Pattern For Reading Web Content
Nuestro aporte al CSS Table Gallery
El CSS Table Gallery es un repositorio de diseños gráficos de tablas, cuyo fin es demostrar que es posible separar el contenido de la presentación. Los diseñadores aportan hojas de estilo CSS a través de las cuales la apariencia de una tabla varía, de acuerdo al estilo elegido por el usuario. El desafío es no tocar el código HTML, sólo modificar el CSS.
Hoy aportamos nuestra propia hoja de estilos a la que pusimos por nombre Salmon, dado que sus colores están inspirados en el color naranjo del salmón, el principal producto de la zona de Puerto Montt.
Técnicamente, la hoja de estilos funciona con las versiones de Internet Explores superiores a 5, Firefox y Opera. Para los usuarios de navegadores modernos como Firefox, la experiencia es mejorada gracias al uso de efectos hover y del uso de los selectors after y before, además de agregar textos usando la propiedad content.
Vista de CSS Table Gallery usando estilo CSS Salmon.
Otros estilos previamente publicados, que podrían interesarte porque demuestran novedosos usos de CSS en tablas son:
- Two Times Table, que cambia el concepto de lo que es una tabla.
- Spread Firefox!, que muestra todo lo que Firefox puede manejar e Internet Explorer no.
- Grayed Out, que explora un posible estilo tipo Excel.
Flexibilizando El Tamaño De Letra
Brindar textos en un tamaño adecuado a las capacidades visuales del usuario es una principio básico de usabilidad. En este artículo se muestra como modificar el tamaño del texto en zonas específicas de una página a través de controles ubicados en la misma página.
La técnica consiste en fijar tamaños de texto que sean relativos a un elemento base y luego con JavaScript cambiar el tamaño de letra del elemento base.
Fijando tamaño de letra base
A través de una hoja de estilos especificamos el tamaño de texto por defecto al elemento body.
body{
font-size:12px;
}
Debido a la característica de herencia de los selectores CSS, todos los elementos internos al body tomarán como base éste tamaño de texto.
Ahora, se deben especificar tamaños de texto al resto de los elementos. Estos tamaños deben ser especificados en porcentaje o em, dado que necesitamos que los tamaños sean relativos.
p { font-size:100%; }
h1 { font-size:160%; }
h2 { font-size:140%; }
Preparando nuestra página
Para que nuestro script sólo cambie el tamaño de texto en una zona específica de la página (por ejemplo el cuerpo de una noticia), debemos identificar un elemento contenedor al texto que queremos cambiar. Para este ejemplo estableceremos el id de un div de la siguiente manera.
texto que queremos cambiar de tamaño
Además debemos establecer los controles que permitirán cambiar el tamaño del texto. En nuestro ejemplo crearemos 3 links para las acciones de Aumentar, Disminuir y Reestablecer tamaño del texto.
<a href="#" onClick="zoomText('aumentar','Contenido')">Aumentar</a><br />
<a href="#" onClick="zoomText('disminuir','Contenido')">Disminuir</a><br />
<a href="#" onClick="zoomText('reestablecer','Contenido')">Reestablecer</a>
En el código se llama a la función ZoomText cada vez que se hace clic en alguno de los links, para que esta función realice el cambio en el tamaño de las letras.
La función ZoomText
La Función ZoomText recibe 2 parámetros:
- Acción: indica la acción a realizar y puede tomar los valores aumentar, disminuir y reestablecer.
- Elemento: el nombre del identificador del elemento contenedor del texto a ser modificado.
El código de esta función es el siguiente.
ACTUALIZACIÓN: Se ha agregado código para limitar el tamaño máximo y mínimo de letra.
function zoomText(Accion,Elemento){
//inicializacion de variables y parámetros
var obj=document.getElementById(Elemento);
var max = 200 //tamaño máximo del fontSize
var min = 70 //tamaño mínimo del fontSize
if (obj.style.fontSize==""){
obj.style.fontSize="100%";
}
actual=parseInt(obj.style.fontSize); //valor actual del tamaño del texto
incremento=10;// el valor del incremento o decremento en el tamaño
//accion sobre el texto
if( Accion=="reestablecer" ){
obj.style.fontSize="100%"
}
if( Accion=="aumentar" && ((actual+incremento) <= max )){
valor=actual+incremento;
obj.style.fontSize=valor+"%"
}
if( Accion=="disminuir" && ((actual+incremento) >= min )){
valor=actual-incremento;
obj.style.fontSize=valor+"%"
}
}
Lo que hace el script es obtener el tamaño actual del texto en el elemento contenedor del texto. Luego dependiendo de la acción tomada cambia el valor de la propiedad fontSize de este elemento. Al cambiar el tamaño de texto en el elemento contenedor, automáticamente cambia el tamaño en los elementos internos, debido a que su tamaño ha sido especificado en forma relativa.
Para ver esta técnica en funcionamiento, sólo debes usar las opciones provistas para ello en el menú derecho de esta misma página.
Creando páginas imprimibles con CSS
Una de las grandes ventajas de trabajar con estándares (lease XHTML y CSS) y separar el Contenido de la Forma, es el hecho de que las páginas pueden verse bien en cualquier medio de difusión: Pantalla, Impresión, Palm, WebTV, etc. Como el Contenido (la página XHTML) no cambia, se puede adaptar Forma con distintas hojas de estilo CSS enfocadas a medios específicos lo que nos evita el trabajo de crear paginas para cada medio. En este artículo se explica como aprovechar el potencial de CSS para que nuestras páginas se vean bien incluso al imprimirse.
Seleccionando nuestro Objetivo
Es importante antes de empezar definir claramente que páginas necesitan estilos para impresión. Por ejemplo en nuestro sitio web, sólo los artículos de nuestro blog, por el momento, cuentan con esta característica. Se debe tener en cuenta que hay páginas del sitio que no están hechas para ser impresas, como por ejemplo la página de inicio, porque Internet obviamente es un medio muy distinto a los tradicionales.
Hojas de Estilo para Pantalla y para Impresora
El primer paso que se debe realizar es declarar en el head de nuestra página que hoja de estilos afectará un medio específico, lo que se hace de la siguiente forma.
<link href="estilos.css" rel="stylesheet" type="text/css" media="screen" />
<link href="print.css" rel="stylesheet" type="text/css" media="print" />
El parámetro media es lo que permite discriminar a que medio afectará la hoja de estilos correspondiente. En nuestro caso tenemos una hoja de estilos para el medio "screen", que es la pantalla de computador común y corriente, y otra hoja para el medio "print".
Esta es la forma más fácil de trabajo y es la que ocuparemos en este artículo. Sin embargo, es muy usado que que la hoja de estilos general afecte a todos los medios incluyendo el medio print (especificando media="all" en vez de media="screen" o simplemente no especificando medio), por lo que la hoja de estilos de impresión debe trabajar eliminando el formateo de la hoja de estilos general. Ése es un proceso epecífico para cada sitio por lo que no ha sido ocupada esa opción en este artículo.
Ocultando lo indeseado
Ahora empezamos a trabajar en nuestra hoja de estilos para la impresión. El primer paso consiste en ocultar las zonas de nuestra página que en una impresión normal no debieran ser vistas, como por ejemplo: Barras de Naveagación, Menús, Breadcrumbs, Cuadros de Herramientas, Formularios, etc. En este punto hay que aclarar que estamos trabajando sobre una página bien estructurada que sigue los estándares HTML o XHTML, de otro modo el asunto se hace más difícil.
Suponiendo que tenemos 3 divs para ocultar: #Encabezado, #Menu y #Publicidad, debemos declarar en nuestra hoja de estilos, lo siguiente:
#Encabezado, #Menu, #Publicidad{
display: none;
}
Debemos hacer esto con cada elemento que deseemos ocultar.
Ajustando todo al Área Imprimible
Debemos ahora hacer que nuestro contenido se ajuste exactamente al ancho de la hoja que se usará para impresión. El ancho puede variar dependiendo del tipo de hoja, por lo que el ancho de nuestros elementos contenedores (por ejemplo un div #container) debe ser relativo, lo que se consigue con la siguiente declaración.
body, #container{
float: none;
width: auto;
margin: 0;
padding: 0;
}
Podríamos haber especificado width:100%, pero según la experiencia de Eric Meyer mostrada en el Artículo ALA's New Print Styles, es preferible ocupar auto. Es preciso aplicar float:none para eliminar un problema de los navegadores Mozilla con elementos flotantes.
Tipografía para impresión
Es el momento ahora de trabajar sobre el texto. Debemos llevar todos nuestros textos a una fuente de fácil lectura. En mi experiencia la fuente Arial en tamaño 10 puntos es una buena opción, pero puedes considerar subir el tamaño a 11 o 12 puntos.
body, p, td, th{
font-family: Arial, Helvetica, sans-serif;
font-size: 10pt;
color: #000;
background: #fff;
}
Nota que aparte de ajustar el tipo de letra y su tamaño, hemos especificado el color negro y el fondo blanco como valores por defecto. Para dar una mejor apariencia al documento, podemos especificar un tipo de letra distinto para los títulos.
h1, h2, h3, h4, h5, h6{
font-family:"Trebuchet MS", Verdana, Arial, sans-serif;
}
Podemos cambiar el color de otros elementos para que resalten en nuestro documento
blockquote, pre, code, cite{
color:#666;
}
Otros Ajustes
Lo presentado anteriormente es un formateo básico. Tu sitio web seguro necesitará otros ajustes, por lo que debes tener en cuenta los siguientes puntos:
- Las imágenes de fondo no son impresas por los navegadores, por lo que no debes ocuparlas.
- Las tablas se muestran sin fondo y sin líneas de separación por lo tanto debes especificar un estilo para ellas como por ejemplo:
table{
border-collapse:collapse;
}
td, th{
border:1px solid #666;
} - Puedes crear texto específico para la impresión, como por ejemplo un pie de página con la información de derecho de autor del material. Como no queremos que se vea en pantalla ocupas la propiedad
display: nonepero esta vez en la hoja de estilos de la pantalla.
Más Información
Visita el sitio web de Eric Meyer, o sus artículos en A List Apart: Going to Print y ALA’s New Print Styles. Si te interesa puede conocer otros tipos de medios distintos a screen y print en la página Media Types de la W3C.
Box Model en Internet Explorer
Imagina que has creado el mejor diseño de tu vida. Obviamente tiene dimensiones precisas. Lo programas y lo revisas en Firefox y todo anda perfecto, sin embargo tu mamá lo ve en su computador y el diseño luce horrible. ¿Qué ha pasado? Es Internet Explorer nuevamente echándote a perder la vida.
Para ser exactos las versiones 5.x y 6 en Quirks Mode de Internet Explorer se apartan de los estándares W3C al renderizar en pantalla los elementos de bloque que tienen un ancho o alto fijo. (Para el ejemplo esta puede ser sólo una de las causas posibles, pero es la más común).
El Problema
Digamos que tenemos la siguiente declaración:
.boxModel{
width:200px;
padding:10px;
border:5px;
margin:10px;
}
Navegadores apegados a los estándares (e incluso IE 6 en Standar Mode) utilizan la siguiente fórmula para calcular las dimensiones del elemento:
Ancho Total = width + padding + border + margin.= 250px.
Ancho del Contenido = width = 200px

Sin embargo IE ocupa la siguiente fórmula:
Ancho Total IE= widht + margin = 220 px.
Ancho del Contenido = width – padding – border = 170px

La solución
Para solucionar esto, debemos crear una nueva declaración, un parche ubicado después de la declaración original en nuestra hoja de estilos, el que para el ejemplo, sería así:
* html .boxModel{
width:230px;
w\idth:200px;
}
El selector * html .boxModel es visto sólo por IE 5.0 hacia arriba (incluído 6). Los ingenieros de Microsoft crearon para su navegador un elemento (representado por el asterisco *) que contiene al elemento html, elemento que no existe en el estandar de la W3C por lo que navegadores como Firefox u Opera no lo reconocen, pero sí IE.
Ahora, para contrarrestar la mala interpretación e IE 5.x, la propiedad width de nuestro parche toma el valor de la siguiente fórmula:
Ancho para parche = width + padding + border
Sin embargo, como este código es visto también por IE 6 (el cual en Standard Mode interpreta bien el box model), debemos hacer que éste reciba un ancho de 200px, por eso se agrega w\idth:200px. ¿Más magia? El backslash entre la w y la i, hace que esta propiedad sea visible sólo por IE 6, con lo que damos el valor correcto del ancho al elemento.
Ancho para parche (w\idth) = width
Hay que hacer notar que todo lo que se ha mostrado para el ancho del elemento es válido también para el alto, aunque generalmente los diseñadores prefieren que sea el contenido el que determine el alto en sus diseños.
Altura minima (min-height) de bloques a traves de CSS
Un problema muy común cuando se trabaja con bloques div, es el de especficar una altura mínima para ellos. Esta situación se da generalmente cuando se tiene una imagen que flota junto a un texto que lo acompaña; si el texto no tiene la altura de la imagen, el contenido de la página que esté bajo el texto, también se mostrará a la derecha de la imagen, debido a que el div que los contiene toma la altura del texto.

La solución es especificar una altura mínima para un cuadro (div) que contenga a la imagen y el texto.

Código XHTML
<div class="box">
<img src="img-ejemplo.gif" width="100" height="125" />
<p>Colocar aquí el contenido para class "box"</p>
</div>
Un div sirve como contenedor de una imagen y un párrafo de texto. No puede ser más simple.
Código CSS
.box{
min-height: 125px;
height: auto !important;
height: 125px;
padding:5px;
}
.box img{
float:left;
}
.box p{
margin-left:135px;
}
Las líneas destacadas son las que establecen la altura mínima al contenedor. La propiedad min-height, establece una altura mínima para un elemento; esta propiedad no funciona en Internet Exploreres, ya que en realidad entiende el atributo hight como un min-height, por lo tanto establecemos height: 125px. Para que los navegadores que si entienden correctamente los atributos height y min-height, como Firefox, no tengan una altura fija (ya que hemos establecido que la altura es 125px), ocupamos height: auto !important, estableciendo una altura automática y dándole mayor prioridad a esta declaración sobre la otra a través de la declaración !important (que no es entendida por Internet Explorer).



