.. highlight:: html Tablas ****** Las tablas pueden ser más o menos complejas dependiendo de la cantidad de datos y organización que queramos darle. Tablas simples ============== Son las que constan opcionalmente de un título y una sucesión de filas. .. table:: Elementos de tablas simples :class: el-html +-----------+----------------------------------------------------------+ | |table| | Elemento contenedor de la tabla | +-----------+----------------------------------------------------------+ | |caption| | Establece el título de la tabla | +-----------+----------------------------------------------------------+ | |tr| | Elemento para definir la fila de una tabla | +-----------+----------------------------------------------------------+ | |th| | Celda de cabecera de la tabla | +-----------+----------------------------------------------------------+ | |td| | Celda de datos de una tabla | +-----------+----------------------------------------------------------+ .. index:: table .. _html-table: **table** (:devmoz:`table`) Es el elemento en el que deben encerrarse toda la tabla. En una tabla simple, está constituida por un elemento opcional :code:`` y una sucesión de elementos de fila :code:`tr`. .. note:: No tiene atributos particulares. Hasta |HTML|\ 4, disponía de un atributo :code:`summary` que permtía hacer una descripción breve del contenido de la tabla. Ahora puede optarse por el título de la tabla que se indica con :code:`` o, si no es suficiente, usar |details| dentro del elemento :code:`caption`::
Datos de empleo Datos de empleo de España para el año 2018 extraídos del INE
.. index:: caption .. _html-caption: **caption** (:devmoz:`caption`) Define el título de la tabla. Por lo general, es corto y se usan dentro de él elementos en línea, pero puede ser más complicado. .. index:: tr .. _html-tr: **tr** (:devmoz:`tr`) Define una fila de la tabla. Está constituida por elementos :code:`` y :code:``. .. index:: th .. index:: td .. _html-th: .. _html-td: | **th** (:devmoz:`th`) | **td** (:devmoz:`td`) | Definen las celdas de la tabla, :code:`` las de cabecera y :code:`` las de datos. Pueden contener atributos :code:`rowspan` y :code:`colspan` para fusionarse, pero se tratará :ref:`más adelante `. .. table:: Atributos de th :class: attr-html +--------+--------------------------------+----------------------------+ | scope | col|row|colgroup|rowgroup|auto | Define las celdas de las | | | | que es cabecera esta celda | +--------+--------------------------------+----------------------------+ Los elementos :code:`` pueden tener un atributo :code:`scope` que identifica cuáles son las celdas de las que es cabecera. La norma tiene un `explicación muy esclarecedora sobre el uso de este atributo `_. Ejemplo de uso: .. code-block:: html
Elementos en tablas sencillas
Elemento Descripción
table Elemento contenedor de la tabla
caption Establece el título de la tabla
tr Elemento para definir la fila de una tabla
th Celda de cabecera de la tabla
td Celda de datos de la tabla
.. rst-class:: ej-html .. raw:: html
Elementos en tablas sencillas
Elemento Descripción
table Elemento contenedor de la tabla
caption Establece el título de la tabla
tr Elemento para definir la fila de una tabla
th Celda de cabecera de la tabla
td Celda de datos de la tabla
.. note:: Por defecto, las tablas no tienen ninguna decoración, ni siquiera el borde de separación entre celdas. Mientras no aprendamos |CSS|, puede valernos con añadir este código para leerlas algo mejor: .. code-block:: css td, th { border: solid black 1px; } Agrupación de filas =================== Bajo este epígrafe pretendemos agrupar las filas, lo que puede permitirnos agruparlas semánticamente y, además, cuando las tablas son largas y se pretenden imprimir, repetir una cabecera y un pie en todas las páginas que ocupe la tabla. .. table:: Elementos de agrupación de filas :class: el-html +-----------+----------------------------------------------------------+ | |thead| | Agrupa filas que constituyen una cabecera. | +-----------+----------------------------------------------------------+ | |tbody| | Agrupa filas en el cuerpo de la tabla. | +-----------+----------------------------------------------------------+ | |tfoot| | Agrupa filas en el cabo de la tabla. | +-----------+----------------------------------------------------------+ .. index:: thead .. index:: tbody .. index:: tfoot .. _html-thead: .. _html-tbody: .. _html-tfoot: | **thead** (:devmoz:`thead`) | **tbody** (:devmoz:`tbody`) | **tfoot** (:devmoz:`tfoot`) | Si optamos por usar estos elementos, una tabla puede estar constituida por un elemento opcional :code:`` seguido de un elemento opcional :code:``, uno o varios elementos :code:`tbody` y un elemento opcional :code:``, dentro de cada uno de los cuales se pueden incluir filas con el elemento :code:``. Ejemplo de uso: .. code-block:: html
Asistentes
Nacionalidad Cantidad
Españoles 100
Portugueses 25
Franceses 50
Italianos 25
Total 100
.. rst-class:: ej-html .. raw:: html
Asistentes
Nacionalidad Cantidad
Españoles 100
Portugueses 25
Franceses 50
Italianos 25
Total 100
Agrupación de columnas ====================== .. table:: Elementos de definición de columnas :class: el-html +------------+------------------------------------------------------+ | |colgroup| | Contiene las definiciones de columnas. | +------------+------------------------------------------------------+ | |col| | Agrupa columnas. | +------------+------------------------------------------------------+ .. index:: colgroup .. index:: col .. _html-colgroup: .. _html-col: | **colgroup** (:devmoz:`colgroup`) | **col** (:devmoz:`col`) | Tras |caption| (si existe) y antes de cualquier otro elemento (|tr|, |thead| o |tbody| según el caso) puede incluirse un elemento :code:`` para contener elementos :code:``. Estos elementos permiten agrupar columnas que comparten una semántica común. El elemento :code:`` puede omitir tanto su apertura como su cierre. Ejemplo de uso: .. code-block:: html
Ciclos formativos en el centro
SMR ASIR CAE SyC
Grado Medio Superior Medio Medio
.. rst-class:: ej-html .. raw:: html
Ciclos formativos en el centro
SMR ASIR CAE SyC
Grado Medio Superior Medio Medio
.. note:: Gracias a las clases, podremos definir distintos estilos para los grupos de columnas, pero `sólo unas pocas propiedades CSS son válidas `_. De hecho, para lograr el efecto en el ejemplo anterior, se ha usado el |CSS|: .. code-block:: css .tb-ejemplo .info { background-color: #cdf; } .tb-ejemplo .sanitaria { background-color: #eeb; } .tb-ejemplo .soldadura { background-color: #bda; } .. _html-agr-celdas: Agrupación de celdas ==================== En ocasiones necesitamos fusionar varias celdas en vertical o varias en horizontal. .. table:: Atributos de fusión de celdas para td/th :class: attr-html +----------+--------+----------------------------------------------------+ | rowspan | [num] | Indica cuántas filas ocupa la celda | +----------+--------+----------------------------------------------------+ | colspan | [num] | Indica cuántas columnas ocupa la celda | +----------+--------+----------------------------------------------------+ Al usar estos atributos las celdas a las que se les usurpa su espacio dejan de existir: .. code-block:: html
Fusion horizontal
1 Fusión vertical
2
.. rst-class:: ej-html .. raw:: html
Fusion horizontal
1 Fusión vertical
2
Ejercicios propuestos ===================== .. include:: /99.ejercicios/62.html-tablas.rst :start-line: 3 .. |details| replace:: :ref:`
` .. |caption| replace:: :ref:` ` .. |table| replace:: :ref:`` .. |tr| replace:: :ref:`` .. |td| replace:: :ref:`` .. |tbody| replace:: :ref:`` .. |tfoot| replace:: :ref:`` .. |col| replace:: :ref:`` .. |colgroup| replace:: :ref:`` .. |CSS| replace:: :abbr:`CSS (Cascading Style Sheets)`
` .. |th| replace:: :ref:` ` .. |thead| replace:: :ref:`