Columnas - Universitat Pompeu Fabra

Anuncio
Curso de Verano 2010
Estilos CSS para el Diseño Web
5. CSS en datos tabulares
5.1 Celdas y filas
Las tablas en HTML son uno de los elementos más odiados por los diseñadores y maquetadores
web ya que durante muchos años se usaron para fines ajenos a su origen 1: las tablas se usaban
para maquetación y no para contener lo que debían y para lo que fueron pensadas: datos
tabulares.
Afortunadamente, la tendencia actual (y desde hace unos años) es que el CSS se use para el diseño
de la maqueta y su layout, permitiendo que las tablas regresen a su esencia, que es mantener
datos en filas y columnas2.
Tablas simples
Veamos cómo se usa el CSS para afectar a las tablas y sus celdas. Seguramente, aparecerán en el
HTML etiquetas poco usadas y atributos o elementos poco conocidos3, pero que son muy útiles al
usar CSS aplicado a tablas, y con ello teniendo ambos lenguajes correctamente utilizados con
datos tabulares.
Código HTML
La muestra en el código 4 es una tabla simple, con algunas etiquetas específicas de una tabla
correctamente definida.
En el navegador, sin aplicar ningún estilo, el resultado es como el que sigue:
En el marcado HTML hay bloques de código que merecen verse con detalle, ya que se relacionarán
con el CSS y se trata de etiquetas poco utilizadas fuera de la cuestión de datos en espacio tabular.
1
Provocando con ello muchos problemas en el diseño web. Las tablas permitían diseño complejo en términos de un
layout armado con celdas, complicando un diseño web en términos de accesibilidad, dificultando la labor del
diseñador, y obligando muchas veces a diseño ‘artesanal’ de las páginas web.
2
Ya que los datos en tablas no son malos, y son muy necesarios. Las tablas no tienen la culpa de todo lo que se llegó a
hacer con ellas ;-)
3
Ya que usualmente sólo se usan <tr> y <td>.
4
Ver 101.html en el tema 5.
Universitat Pompeu Fabra
Prof. Alejandro Ramírez
1
Curso de Verano 2010
Estilos CSS para el Diseño Web
Atributo Summary
El valor del atributo summary no es visible para el usuario, pero se trata de un elemento de
ayuda para usuarios con problemas de visión. El atributo permite ofrecer un resumen de lo que
trata la tabla 5.
<table class="datatable"
anuales.">
summary="Tabla
con
un
resumen
de
los
ingresos
El elemento caption
El valor de caption permite añadir una descripción corta de la naturaleza de la tabla 6.
<caption>Ingresos anuales 2000-2003</caption>
El elemento th
El encabezamiento de filas o columnas se logra a partir de la etiqueta th. En el ejemplo, puede
verse el marcado correcto para encabezados tanto de fila como de columna a partir del atributo
scope de la etiqueta.
La indicación es directa en los valores del atributo, al aplicarse como cabecera de columna (col) o
fila (row).
<th scope="col">2000</th>
<th scope="row">Ventas</th>
CSS para tablas
Veamos lo que es posible lograr con el mismo marcado HTML pero aplicando CSS para dar formato
a la tabla y sus datos 7. Es cierto que sólo con el HTML ya podíamos afectar cosas simples8, pero
con CSS el resultado se vuelve algo mucho más estético, manejable, y con un resultado que se
aleja mucho del diseño plano original.
Comencemos con un CSS simple. La parte que afecta a las tablas 9, es la siguiente:
.datatable {
border: 1px solid #338BA6;
border-collapse: collapse;
}
.datatable td, .datatable th {
border: 1px solid #73C0D4;
}
Que incluye estilos CSS simples, y cosas ya conocidas, con la notación compacta para la propiedad
del borde de la tabla. Lo único nuevo a destacar es la presencia de border-collapse.
5
Los lectores web para invidentes permiten que esta etiqueta aporte información directamente, sin tener que ver
celda a celda qué contiene la información tabular.
6
En el CSS, como veremos, es posible adecuar la posición de esta descripción con la propiedad caption-side.
7
Ver 102.html y su estilo asociado, en este tema.
8
Con lo básico de HTML podemos tocar cosas como el borde de celdas o el color de fondo, pero sabemos que eso
implica depender mucho del HTML para el diseño, algo que no queremos más.
9
En el CSS se incluye un ajuste simple de la tipografía del <body>.
Universitat Pompeu Fabra
Prof. Alejandro Ramírez
2
Curso de Verano 2010
Estilos CSS para el Diseño Web
Esta propiedad se encarga de eliminar el espacio entre las celdas de la tabla para la aplicación de
bordes.
En el navegador, se mostrará así:
Como experimentación, si eliminan 10 el border-collapse veríamos algo como esto:
Donde podemos ver que hay dos bordes: un borde de la tabla como tal (el que se aplica con
.datatable en el CSS) y otro interno, de las celdas (el que se aplica a los td y th dentro de la
clase en cuestión).
Como podemos ver, el border-collapse permite colapsar los bordes, y evitar los espacios que
surgen entre el borde de las celdas11.
Más ajustes
Otro ejemplo 12 nos permite ver la facilidad que tenemos para aportar mejoras a las tablas.
Podemos, por ejemplo, asignar un estilo distinto a las celdas de datos y a las cabeceras de fila o
columna, y podemos dar un estilo al caption, de modo que actúe como encabezado visual de la
celda.
El CSS del código de ejemplo logra algo como lo que sigue:
10
Directamente eliminando la propiedad del CSS.
Su ya habían usado tablas en HTML, esto se relaciona con lo que se ajustaba, en el marcado HTML, con arreglos
como cellspacing=”0”, pero ello implicaba bordes dobles, ya que los bordes se tocan pero no se sobreponen
entre sí. El border-collapse reduce esto a un borde común, colapsado.
12
Ver 103.html en este tema.
11
Universitat Pompeu Fabra
Prof. Alejandro Ramírez
3
Curso de Verano 2010
Estilos CSS para el Diseño Web
Que sale del CSS incluido:
.datatable {
border: 1px solid #D6DDE6;
border-collapse: collapse;
}
.datatable td {
border: 1px solid #D6DDE6;
text-align: right;
padding: 0.2em;
}
.datatable th {
border: 1px solid #828282;
font-weight: bold;
text-align: left;
padding: 0.2em;
background: #CCCCCC;
color: #006699;
}
.datatable caption {
color: #FFFFFF;
padding: 0.4em 0 0.3em 0;
border: 1px solid #789AC6;
font-size: 1.1em;
font-weight: bold;
background: #006699;
}
Las propiedades del código CSS son ya conocidas. Ustedes pueden como siempre, revisar y
modificar a voluntad.
5.2 Colores e imágenes
Veamos un poco más de cómo aplicar color a las tablas, con el fin de que el CSS nos permita
controlar completamente cómo se presentarán.
Filas alternadas
Un ejemplo común del ajuste de datos tabulares es presentar los datos con las filas de colores
alternos, para una lectura más fácil 13.
13
Donde se puede ver claramente en qué fila estamos, especialmente al revisar tablas extensas.
Universitat Pompeu Fabra
Prof. Alejandro Ramírez
4
Curso de Verano 2010
Estilos CSS para el Diseño Web
En el código de muestra 14 podemos ver que las filas (<tr>) incluyen (alternando) una clase que
permite diferenciarla de la fila anterior y siguiente:
<tr>
<td>Alex Ramírez</td>
<td>27/08/1997</td>
<td>Cocina</td>
<td>12009</td>
</tr>
<tr class="altrow">
<td>Speedy González</td>
<td>20/07/1997</td>
<td>Atletismo</td>
<td>12010</td>
</tr>
<tr>
<td>Rafael Márquez</td>
...
Como podeos imaginar, es esta clase la que nos permite controlar los colores alternos en las filas.
En el CSS, esa parte queda en:
.datatable tr.altrow {
background-color: #DFE7F2;
color: #000000;
}
El resto del CSS es muy simple, con propiedades ya revisadas en este tema y temas anteriores.
En el navegador, se verá así:
Donde es evidente que podemos ajustar cada fila para que se muestre como deseamos.
Rollovers
Otra forma de ayudar visualmente en la revisión de datos es la de aplicar un efecto de rollover
que, con el ratón, nos indique en qué fila estamos trabajando.
14
Ver 201.html en este tema.
Universitat Pompeu Fabra
Prof. Alejandro Ramírez
5
Curso de Verano 2010
Estilos CSS para el Diseño Web
El código de muestra 15 incluye un CSS capaz de provocar este efecto a partir de una pseudo-clase.
Dentro del código, este bloque concreto se encarga del rollover.
.datatable tr:hover {
background-color: #DFE7F2;
color: #000000;
}
El :hover ya lo conocíamos como pseudo-clase de los enlaces, pero las filas de las tablas también
pueden aplicarlo.
Al aplicar esto, la única restricción a tener presente es que los navegadores viejos (y, en especial,
los que no siguen estándares 16) no mostrarán el efecto.
En el navegador se verá, al poner el ratón sobre una fila, de este modo:
Columnas
El control de las filas es muy simple, ya que cada fila queda claramente marcada por el <tr>, pero
el control de las columnas requiere un marcado HTML adicional.
En otro ejemplo 17, podemos ver cómo podemos lograr algo como lo que sigue en nuestro
navegador:
El HTML es el de una tabla simple, pero incluye, en la tabla, un grupo de etiquetas poco conocidas:
las etiquetas <col>.
15
Ver 202.html.
El MS IE6, por ejemplo, es uno de estos casos.
17
Ver 203.html.
16
Universitat Pompeu Fabra
Prof. Alejandro Ramírez
6
Curso de Verano 2010
Estilos CSS para el Diseño Web
<table class="datatable">
<col
<col
<col
<col
class="odd" />
class="even" />
class="odd" />
class="even" />
<tr> ...
Sabemos que las tablas se construyen con la definición de las filas, pero cuando es requerido
conocer la estructura de las columnas, usamos <col>.
A diferencia de las filas, <col> no incluye elementos en su interior (es decir, no incluye las celdas)
sino que sirven para definir grupos de columnas. Esto permite que CSS pueda ser aplicado a la
columna y no a las celdas o filas.
El CSS relevante es el de los bloques siguientes:
.datatable col.odd {
color: #000000;
background: #99CCCC;
}
.datatable col.even {
color: #000000;
background: #99CC00;
}
Donde definimos estilos para la clase de cada columna en nuestro HTML. El ejemplo simplemente
da colores a las dos clases.
Grupos de columnas
Aprovechando el uso de tablas, podemos ver otro HTML18 que puede usarse para agrupar
columnas de acuerdo a nuestros intereses.
En el HTML, tenemos los siguientes grupos de columnas:
<table class="datatable">
<colgroup class="odd">
<col />
<col />
</colgroup>
<colgroup class="even">
<col />
<col />
</colgroup>
<tr>...
Con los grupos de columnas agrupados dentro de colgroup.
Cada colgroup es un contenedor para un número variable e elementos col, lo que nos permite
aplicar atributos CSS simultáneamente a un conjunto de elementos col. De otro modo,
tendríamos que aplicar ajustes a cada col de forma independiente.
18
Ver 204.html.
Universitat Pompeu Fabra
Prof. Alejandro Ramírez
7
Curso de Verano 2010
Estilos CSS para el Diseño Web
En el CSS, tenemos estos bloques:
.datatable colgroup.odd {
color: #000000;
background: #99CCCC;
}
.datatable colgroup.even {
color: #000000;
background: #99CC00;
}
Donde aplicamos un estilo distinto a cada agrupación de columnas.
En el navegador, agrupando de dos en dos las columnas, se mostrará de la siguiente forma:
Imágenes
Para finalizar este tema, podemos ver el efecto de aplicar una imagen como fondo. El código de
muestra incluye este HTML 19:
<table class="datatable">
<tr>
<th>Grupo A</th>
<th>Grupo B</th>…
Que, como sabemos, nos permite ajustar libremente el estilo de esa clase. En nuestro CSS aparece
esto:
.datatable {
border: 1px solid #D6DDE6;
border-collapse: collapse;
width: 50%;
background: url(imagenes/soccer_field.jpg);
}
Donde se incluye la imagen siguiente:
19
Ver 205.html.
Universitat Pompeu Fabra
Prof. Alejandro Ramírez
8
Curso de Verano 2010
Estilos CSS para el Diseño Web
En el navegador, esto se mostrará como sigue:
Como nota importante, pueden ver que el estilo de los <th>, con colores planos, oculta la imagen.
Si quitamos el color de fondo de ese estilo, tendríamos algo como esto:
En las tablas, si definimos un color de fondo para las celdas, <td>, sucedería lo mismo: el color
queda encima de la imagen, cubriéndola.
De temas anteriores, sabemos que tenemos algunas opciones para el control de la imagen del
background en algunos elementos pero en las tablas el control no es total: podemos ajustar la
repetición, pero no la posición, y hay que eliminar colores de fondo si deseamos aplicar una
imagen.
Les toca experimentar con las opciones y ajustes que deseen.
Como siempre, y para cualquier duda, los foros están siempre abiertos.
Universitat Pompeu Fabra
Prof. Alejandro Ramírez
9
Descargar