HTML: Tablas accesibles y usadas donde tiene que ser

27 de mayo de 2009 | Etiquetas: , , , | Categoría: html

Está mas que claro, que usar tablas para distribuir, organizar, maquetar un sitio es algo pasado de moda.
Para eso están los divs y el css que son mucho más molones y puedes hacer formas imposibles, recuerda los layouts que comentábamos hace unos meses.

Pero eso no significa que no podamos poner ninguna tabla en nuestra web, no os asustéis porque los diseñadores/maquetadores vayan chillando por medio mundo: ¡Muerte a las tablas! Sólo les deseamos la muerte a las tablas mal formadas, a las tablas no accesibles y a las tablas que no son usadas cómo tal.

Y es que si queremos mostrar datos de manera tabular, ¡Qué mejor que una tabla!

Para esas veces, en las que sí podemos incluir una tabla en nuestra web, vamos a crearlas de manera que sean accesibles y válidas para w3c.

Un ejemplo de estructura simple de una tabla sería el siguiente:

<table>
	<tr>
		<td></td>
	</tr>
</table>

Donde <tr> (table row) corresponde con una fila (row), y <td> (table data cell) con una celda (data cell). El número de celdas dentro de una fila, corresponderá con el numero de columnas de nuestra tabla.

Sabiendo esto, vamos a definir mejor nuestra tabla:

<table summary="Codigo de paises con color asociado.">

En la etiqueta <table> debemos indicar (si o si) el atributo summary, describiendo el contenido de la tabla.

<caption>ID de los paises RGB</caption>

<caption> nos sirve definir el titulo de la tabla.

	<thead>
		<tr>
			<th>ID</th>
			<th>Pais</th>
			<th>Color</th>
		</tr>
	</thead>

<thead> contiene las cabeceras de la tabla.
<th> corresponde a la celda ubicada en la cabecera de la página. Viene bien ponerle esta etiqueta ya que luego nos será más facil aplicarle un estilo específico al titulo y no a todas las celdas.

	<tfoot>
		<tr>
			<th>ID</th>
			<th>Pais</th>
			<th>Color</th>
		</tr>
	</tfoot>

<tfoot> contiene el pie de la tabla, esta etiqueta la tenemos que poner antes que <tbody> aunque se mostrará después, si no lo hacemos así, no será válida (es un poco raro, si).

	<tbody>
		<tr>
			<td>ES</td>
			<td>España</td>
			<td>#990000</td>
		</tr>
		<tr>
			<td>FR</td>
			<td>Francia</td>
			<td rowspan="2">#000099</td>
		</tr>
		<tr>
			<td>IT</td>
			<td>Italia</td>
		</tr>
	</tbody>

<tbody> contiene el cuerpo de la tabla, cuando una tabla solo tiene un cuerpo (un grupo de datos, por asi decirlo) se puede omitir y se interpreta como cuerpo, todo lo que no sea cabecera.

En las etiquetas <th> y <td> tenemos algunos atributos para aplicar:
- abbr: contiene la descripcion del contenido de la celda.
- headers: contiene la id (si la hemos especificado) de la(s) celda(s) que actúa como cabecera de esta.
- scope: puede ser col o row, indica si es cabecera de una columna de celdas, o de una fila, no es obligatorio definirlo.
- colspan: especifica el numero de columnas que ocupa esta celda.
- rowspan: especifica las filas que ocupa esta celda.

Los demás atributos, como pueden ser el alto (height), el borde (border), la alineación (valign), etc, debemos definirlos aplicando estilos (css).

Y con esto ya deberíamos ser capaces de crear una tabla bien chula :D

Twittea esto Guardalo en Delicious Compartelo en Facebook

HTML: Crear un formulario estructurado, validado y accesible.

20 de mayo de 2009 | Etiquetas: , , , | Categoría: Formularios

Me he dado cuenta de que tengo muchos artículos sobre cómo enviar y validar un formulario de contacto, pero en ninguno explico como se debe crear la estructura de éste. Ya sabéis, la parte en html.
Así que voy ha hacerlo aquí.

La etiqueta para indicar que vamos a crear un formulario es <form> y debe llevar los siguientes atributos:
name: para nombrarlo, identificarlo
method: indica el metodo elegido para enviar los datos, puede ser get (a través de la url) o post (de manera interna).
action: indica la ruta del archivo que va a recibir los datos enviados
enctype: indica el tipo de contenido, la añadimos solamente si trabajamos con recogida de archivos

<form name="contacto" method="post" action="#"><!-- contenido del formulario --> </form>

Dependiendo de si nuestro formulario tiene uno o varios temas, deberemos añadir la etiqueta <fieldset> para clasificar los apartados, y a su vez etiquetas <legend> para añadirle titulos a esos apartados.
Por ejemplo, un formulario de registro que pida información personal, información profesional e información de contacto.

<fieldset>
  <legend>Informacion personal</legend>
  <!-- aqui irian los campos -->
</fieldset>
<fieldset>
  <legend>Informacion profesional</legend>
  <!-- aqui irian los campos -->
</fieldset>
<fieldset>
  <legend>Informacion de contacto</legend>
  <!-- aqui irian los campos -->
</fieldset>

Como último paso de la estructura de nuestro formulario, pasamos a las etiquetas para relacionar los campos, cada campo debe tener una etiqueta <label> asociada con un texto de información sobre éste.
Para relacionar una etiqueta con un campo, debemos añadir al campo el atributo id con un nombre y a la etiqueta el atributo for con el nombre dado al campo a relacionar.

<label for="nombre">Nombre:</label> <input type="text" id="nombre" name="nombre"  />

En los campos del tipo input, textarea, select la etiqueta es recomendable que aparezca a la izquierda, en el resto (checkbox, por ejemplo) a la derecha. En los botones (submit, reset) no es obligatorio poner una etiqueta, de hecho es mejor no ponerlas.

Una vez aprendido esto ya podemos empezar a rellenar nuestro formulario, los campos mas utilizados son: campos de texto (1), casillas de verificación (2), botones de opción (3), áreas de texto (4), desplegables (5), campo de imagen (6), botón de reinicio del formulario (7), botón de envio del formulario (8).

<input type="text" id="" name="" />
<input name="" type="checkbox" id="" value="" />
<input name="" type="radio" id="" value="" />
<textarea name="" id=""></textarea>
<select name="" id=""><option value="">A<option><option value="">B<option></select>
<input type="image" name="" id="" />
<input type="reset" name="" value="Borrar" />
<input type="submit" name="" value="Enviar" />

Para conseguir un formulario un poco mas accesible, debemos colocar en todos los campos, los siguientes atributos:
accesskey: Asocia una tecla a un campo de nuestro formulario, por lo que podremos acceder a ese campo de manera más fácil / rápida.
tabindex: indica el orden por el que se desplazará el usuario al pulsar la tecla tabulación de su teclado.
Acceskey solo puede ser asociado en los campos: button, input, label, legend y textarea, para el resto de campos deberemos de agregar este atributo en su etiqueta <label>.

<input type="text" id="nombre" name="nombre" accesskey="n" tabindex="1" />

Y juntando todos los pasos, ya tenemos un formulario bien estructurado, validado con los estándares w3c y lo más importante, accesible.

Puedes ver un ejemplo online.

Podría contaros un poquito más, como que si tenemos muchas opciones en un select podemos agruparlas segun categorias con la etiqueta <optgroup>, pero cómo sé que la mayoría de vosotros ya estáis aburrido (o directamente no habéis llegado hasta aqui xD), doy por finalizado este artículo :D

Mas adelante explicaré un poquito como darle estilo (css) a los formularios, sin tener que usar etiquetas externas a las explicadas aquí, usease, sin tener que añadir tablas, ni párrafos, etc.

Twittea esto Guardalo en Delicious Compartelo en Facebook

Web: estándares (w3c) y accesibilidad (taw)

14 de junio de 2008 | Etiquetas: , , , , , | Categoría: Estandares

Hoy en día hay que tener en cuenta muchas cosas a la hora de comenzar a programar/maquetar una web (nada de abrir el dreamweaver y arrastrar elementos por favor!!), desde seguir unos estándares para validar nuestro código hasta comprobar la accesibilidad de todos los elementos, ya que no queremos que ningún usuario se quede sin poder ver nuestro contenido..

Para que eso no ocurra voy a intentar ayudaros a resolver algunos problemas que aparecen cuando se mide la accesibilidad de una web, recomiendo tener los estándares w3c y el test de accesibilidad taw (o en su caso los complementos para firefox ^^) siempre a mano mientras vas metiendo código, ya que ir resolviendo los conflictos mientras van apareciendo es mejor que tener la web lista, comprobarlo, y que te dé el bajón!

Bueno, voy al lío, cómo solucionar algunos errores de accesibilidad:

(*) No existe el atributo “lang” o “xml:lang”: No se ha indicado el idioma principal de este documento.

Debemos específicar el idioma de nuestra web, para hacerlo simplemente añadimos el atributo correspondiente a la etiqueta <html> quedándonos así:

<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">

“es” para español, “en” para ingles,.. podéis ver todos en la informacion oficial.

(*) Proporcione un texto equivalente para todo elemento no textual.

Es muuuy importante que todas nuestras imágenes tengan el atributo “alt”, ya que en él debemos especificar lo que representa nuestra imagen, así si no se puede visualizar, el usuario no deja de recibir la información. Si además la imagen tiene información muy importante, podemos añadirle el atributo “longdesc” donde se le especifica una URL con más datos sobre la imagen (sólo puede contener una url, nada de texto).
Una etiqueta de imagen válida y accesible sería:

<img src="imagen.jpg" alt="descripcion de la imagen" longdesc="masinformacion.html" />

Acordaros que la etiqueta img se cierra “ella misma”, tiene que llevar la barra / siempre al final!

(*) No existen teclas de acceso rápido (atributo “accesskey”) para ningún control ni enlace de este documento. Compruebe si son necesarias
(*) Indique el significado de abreviaturas y acrónimos mediante el atributo “title” la primera vez que aparezcan en un documento.

A la hora de insertar enlaces, debemos agregarles el atributo “title” indicando información sobre donde nos llevará, también es conveniente añadir “acceskey”, ya que se podrá acceder a todo el contenido de la web sin necesidad de tener ratón, sólo con el teclado. Un ejemplo de enlace completito sería:

<a href="pagina.html" title="titulo de la pagina" acceskey="x">enlace</a>

Para utilizar la tecla de acceso al enlace en windows debemos hacerlo manteniendo pulsado “alt”, para mac pulsamos “control” (más la letra de acceso claro).

(*) No existe el elemento “noscript” con contenido alternativo para “scripts”. Compruebe si es necesario para no perfer funcionalidad o información.

Siempre que tengamos scripts, debemos tener noscripts, ya que si un navegador no ejecuta el script dispone de una alternativa con esta etiqueta.

<script type="text/javascript">contenido del script</script>
<noscript>alternativa del script</script>

Acordaros de añadir el atributo “type” al script, nada de “language”..!

Y.. basta de accesibilidad por hoy, mientras me vayan surgiendo/me acuerde/me pidan ayuda para solucionarlos iré poniendo más, espero que os sirva para algo :P

Importante: valida tu código mientras lo vas escribiendo, será menos pesado!

Twittea esto Guardalo en Delicious Compartelo en Facebook

1 pages