Semántica HTML5
Elementos Semánticos HTML5
La semántica es el estudio de los significados de las palabras y frases en un idioma.
Elementos semánticos = elementos con un significado.
¿Qué son los elementos semánticos?
Un elemento semántico describe claramente su significado tanto para el navegador web como para el desarrollador.
Elementos no semánticos: Para las etiquetas <div>
y <span>
no dice nada sobre su contenido.
Elementos semánticos: Para las etiquetas <form>
, <table>
y <article>
sí define claramente su contenido.
Los elementos semánticos HTML5 son soportados en todos los Navegadores Web modernos. Pero adicionalmente, se puede especificar el comportamiento de los "elementos desconocidos" para enseñar a los Navegadores Web antiguos como manejarlos para su visualización.
Nuevos Elementos Semánticos en HTML5
Muchas páginas web contienen código HTML como: <div id="nav"> <div class="header"> <div id="footer">
para indicar la navegación, el encabezado y el pie de página respectivamente.
HTML5 ofrece nuevos elementos semánticos para definir diferentes partes de la página web:
<article>
<aside>
<details>
<figcapture>
<figure>
<footer>
<header>
<main>
<mark>
<nav>
<section>
<summary>
<time>
El elemento section HTML5
El elemento <section>
define una sección del documento y de acuerdo a la documentación HTML5 del W3C: "Una sección es una agrupación temática de contenido" generalmente con un título de encabezado".
Una página de inicio normalmente se puede dividir en secciones para introducción, contenido e información de contacto.
<section>
<h2>Título de Sección</h2>
<p>Este es el contenido de la sección...</p>
</section>
El elemento article HTML5
El elemento <article>
define contenido independiente y autocontenido, es decir, un artículo. Un artículo debe tener sentido por sí solo y debería ser posible leerlo destacándose independiente del resto de la página.
Ejemplos de en donde pueden ser usados los elementos <article>
:
- Post de foros.
- Post de blogs.
- Artículos de Noticias.
<article>
<h2>Título del Artículo</h2>
<p>Contenido del Artículo...</p>
</articl>
¿Anidar un article en un section o viceversa?
Aunque podemos encontrar en internet sitios web que anidan elementos <article>
en otro elemento <section>
o viceversa, no es correcto dentro de en la semántica HTML5. Dado que el elemento <section>
representa una sección genérica del documento, mientras que el elemento <article>
representa un contenido autocontenido del documento, es decir, es el contenido de la página que se destaca del resto de las secciones.
Un elemento <article>
anidado en otro elemento <article>
representa contenido directamente relacionado al <article>
que lo contiene. Como por ejemplo un artículo que contiene comentarios o post relacionados al artículo.
El elemento header HTML5
El elemento <header>
especifica una sección de encabezado del documento o un encabezado de una sección del documento. Defería ser usado como un contendor de introducción de contenido. Pueden existir muchos elementos <header>
en un documento.
El siguiente ejemplo define un encabezado para un artículo:
<article>
<header>
<h2>Título</h2>
<p>Introducción del contenido ...</p>
</header>
<p>Contenido del Artículo ...</p>
</article>
El elemento footer HTML5
El elemento <footer>
especifica el pie del documento o de una sección. Debe contener información relacionada a la información de su contenedor. Un pie de documento tipico contiene los datos del autor, los derechos reservados (copyright), ligas a los términos de uso, información de contacto, etc. Pueden exister muchos elementos <footer> en un documento.
<footer>
<p>Post por: Sergio Loya</p>
<p>Contacto: <a href="mailto:sergioloya@exasoluciones.com"></a>.</p>
</footer>
El elemento nav HTML5
El elemento <nav>
declara un conjunto de ligas o enlaces de navegación.
Nota: No todos los enlaces de un documento deben estar dentro de un elemento
<nav>
. El elemento<nav>
es intencionado para el bloque mayor de enlaces de navegación, como el menú de navegación principal del sitio.
<nav>
<a href="/inicio/html">HTML</a> |
<a href="/inicio/css">CSS</a> |
<a href="/inicio/js">JavaScript</a> |
<a href="/inicio/jquery">jQuery</a>
</nav>
El elemento aside HTML5
El elemento <aside> define un contenido aparte del contenido en el que se encuentra (como una barra lateral). El contenido <aside> debe estar relacionado con el contenido circundante.
<p>Mi familia y yo visitamos el zoológico.</p>
<aside>
<h4>Zoológico</h4>
<p>Lugar en donde se exhiben animales ...</p>
</aside>
Los elementos figure y figcaption HTML5
El propósito de una leyenda de una figura es agregar un descripción textual a una imagen. En HTML5, una imagen y una leyenda pueden ser agrupados juntos en un elemento <figure>
:
<figure>
<img src="img_manzana.jpg" alt="Una manzana">
<figcaption>Fig1. - Manzana, Fruta.</figcaption>
</figure>
El elemento <img> define una imagen, el elemento <figcaption>
define la leyenda.
¿Por qué los elementos semánticos?
Con el HTML 4, los desarrolladores usaron sus propios nombres de id y class para dar estilos a los elementos como: header, top, bottom, footer, menu, navigation, main, container, content, article, sidebar, topnav, etc. Esto dificulto a los motores de búsqueda identificar el contenido correcto una página web. Con los nuevos elementos semánticos HTML5 (<header>
, <footer>
, <nav>, <section>
y <article>
) será más fácil identificar el contenido correcto de una página web.
De acuerdo con el W3C, un Sitio Web semántico: "Permite que los datos se compartan y reutilicen a través de aplicaciones, empresas y comunidades".
Elementos Semánticos en HTML5
A continuación se muestra una lista ordenada alfabéticamente con los nuevos elementos semánticos en HTML5:
Etiqueta | Descripción |
---|---|
<article> |
Define un artículo. |
<aside> |
Define contenido aparte del contenido de la página. |
<details> |
Define detalles adicionales que el usuario puede mostrar y ocultar. |
<figcaption> |
Define una leyenda para un elemento <figure> . |
<figure> |
Especifica contenido autónomo, como ilustraciones, diagramas, fotos, listas de códigos, etc. |
<footer> |
Define el pie del documento o el pie de una sección. |
<header> |
Especifica un encabezado para un documento o sección. |
<main> |
Especifica el contenido principal de un documento. |
<mark> |
Define un texto marcado/resaltado. |
<nav> |
Define un conjunto de enlaces de navegación. |
<section> |
Define una sección en un documento. |
<summary> |
Define un encabezado visible para un elemento <details> . |
<time> |
Define un Date/Time. |