Skip to content

🧠 Guía completa para dominar HTML desde cero: aprende el uso correcto de las etiquetas, buenas prácticas semánticas y fundamentos de SEO .

Notifications You must be signed in to change notification settings

jcbalbdev/guia-html

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 

Repository files navigation

Guía de HTML Semántico y SEO — Aprende a Escribir Código Web Limpio y Accesible

HTML5 Badge Accesibilidad Estado: En progreso Último commit


Logo de Github

Si consideras útil estos ejercicios, apóyalo haciendo "★ Star" en el repositorio. ¡Gracias!

🗺️ Índice de la Guía Completa de HTML

Tabla de Contenidos

🔰 Nivel 0 - Fundamentos

Tema 1: ¿Qué es HTML y cómo funciona?

HTML (HyperText Markup Language) es el lenguaje de marcado estándar de la web. Su función principal es dar forma y estructura al contenido que aparece en la web, como textos, imágenes, enlaces, formularios, etc.

¿Cómo funciona?

HTML funciona a través de etiquetas (tags) que el navegador interpreta para mostrar el contenido de manera estructurada. Estas etiquetas están encerradas entre signos de menor y mayor que (< >), y suelen tener una etiqueta de apertura (<p>) y una etiqueta de cierre (</p>), aunque algunas etiquetas son autocontenidas (como <img>).

Cuando escribes código HTML, estás diciendo al navegador:

“Esto es un párrafo”, “esto es un título”, “esto es una imagen”, etc.

El navegador entonces interpreta y renderiza ese contenido en pantalla.

Etiquetas HTML asociadas a este tema

En este tema introductorio, hay dos etiquetas clave que debes conocer:

  1. <html>

    • Uso: Es la raíz de todo documento HTML. Contiene todo el contenido visible e invisible (metadatos).

    • Atributos principales:

      • lang: Define el idioma del contenido (ej. lang="es" para español).
  2. <!DOCTYPE html>

    • Uso: No es una etiqueta HTML como tal, sino una declaración obligatoria que le dice al navegador que estamos usando HTML5, la versión moderna.

    • Atributos: No tiene atributos. Siempre se escribe como:

      <!DOCTYPE html>

Advertencias clave

  • Nunca olvides <!DOCTYPE html>, ya que si no está, el navegador podría usar un "modo de compatibilidad" que no sigue las reglas modernas.

  • Aunque el contenido visible no cambia sin lang, este atributo es fundamental para la accesibilidad y el SEO.

  • Todo documento HTML debe comenzar con <!DOCTYPE html> seguido por una etiqueta <html>.

Tema 2: Estructura básica de un documento HTML

La estructura básica de un archivo HTML sigue un orden estricto que define qué se muestra y cómo debe interpretarse la información. Esta estructura está compuesta por etiquetas clave, que organizan el contenido y los metadatos del sitio.

A continuación, se muestra la estructura mínima recomendada en HTML5:

<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="UTF-8" />
    <title>Mi primera página</title>
  </head>
  <body>
    <h1>¡Hola, mundo!</h1>
    <p>Bienvenido a tu primera página web.</p>
  </body>
</html>

Esta estructura tiene tres grandes bloques:

  1. <!DOCTYPE html> → Declaración del tipo de documento (HTML5).
  2. <html> → Raíz del documento.
  3. <head> → Contiene metadatos (no visibles por el usuario).
  4. <body> → Contiene todo el contenido visible de la página.

Etiquetas HTML asociadas a este tema

  1. <html>

    • Uso: Raíz de todo el documento.

    • Atributos comunes:

      • lang: idioma principal del contenido ("es", "en", etc.).
  2. <head>

    • Uso: Contiene metadatos, enlaces a scripts y estilos, y configuraciones importantes del sitio.

    • No tiene atributos comunes, pero puede contener varias etiquetas importantes.

  3. <meta>

    • Uso: Define metadatos como codificación de caracteres, descripción, palabras clave, etc.

    • Atributos comunes:

      • charset: define la codificación de caracteres (UTF-8 es la más usada).
      • name: tipo de información (ej. "description", "keywords").
      • content: valor del metadato.
  4. <title>

    • Uso: Define el título de la pestaña del navegador.

    • Atributos: no tiene atributos comunes.

  5. <body>

    • Uso: Contiene el contenido visible del sitio (texto, imágenes, botones, etc.).

    • Atributos comunes:

      • class, id, style.

Advertencias clave

  • Nunca pongas contenido visible dentro del <head>: todo contenido visible debe ir en <body>.

  • Usa siempre <meta charset="UTF-8"> para evitar errores con acentos o caracteres especiales.

  • La etiqueta <title> es fundamental para SEO y usabilidad: no la omitas.

  • El orden correcto de etiquetas importa, especialmente en el <head>.

Tema 3: Etiquetas de texto (títulos, párrafos, saltos de línea, etc.)

HTML proporciona un conjunto de etiquetas fundamentales para estructurar el contenido textual de una página. Estas etiquetas permiten dividir el contenido en títulos jerárquicos, párrafos, líneas separadas y comentarios. Esta estructura es esencial para la legibilidad, accesibilidad y SEO.

Etiquetas HTML asociadas a este tema

A continuación, se detallan todas las etiquetas clave para estructurar texto:

  1. Títulos ( <h1> a <h6> )
  • Uso: Representan títulos jerárquicos. <h1> es el más importante (solo debe usarse una vez por página), y <h6> el menos importante.

  • Jerarquía:

    <h1>Título principal</h1>
    <h2>Subtítulo</h2>
    <h3>Subsección</h3>
    ...
    <h6>Detalle mínimo</h6>
  • Atributos comunes

    • id: para navegación o estilos específicos.
    • class: para aplicar estilos CSS.
    • style: estilos en línea (no recomendado).
  1. Párrafo ( <p> )
  • Uso: Contiene bloques de texto. Representa ideas completas.

    <p>Este es un párrafo de ejemplo.</p>
  • Atributos comunes

    • id: para navegación o estilos específicos.
    • class: para aplicar estilos CSS.
    • style: estilos en línea (no recomendado).
  1. Salto de línea ( <br> )
  • Uso: Inserta un salto de línea. No debe usarse para separar párrafos enteros.
Línea 1<br>
Línea 2
  • Ojo: Es una etiqueta autocontenida (no lleva cierre).

  • Atributos comunes

    • id: para navegación o estilos específicos.
    • class: para aplicar estilos CSS.
    • style: estilos en línea (no recomendado).
  1. Línea horizontal ( <hr> )
  • Uso: Representa una separación temática (no visual decorativa).
<p>Primera sección</p>
<hr>
<p>Segunda sección</p>
  • Atributos comunes
    • id: para navegación o estilos específicos.
    • class: para aplicar estilos CSS.
    • style: estilos en línea (no recomendado).
  1. Comentarios ( <!-- comentario --> )
  • Uso: No visible al usuario. Sirve para dejar notas en el código.
<!-- Este es un comentario -->

Advertencias clave

  • No uses múltiples <h1> en una sola página. Debe haber solo uno, representando el título principal.
  • Usa <br> solo cuando realmente necesites un salto puntual. Para separar bloques usa <p> o CSS.
  • No uses títulos solo para agrandar texto. Usa CSS para estilos y HTML para significado.
  • Los comentarios no deben estar dentro de otras etiquetas (excepto en <head> o <body>).

Tema 4: Comentarios y espaciado en HTML

En HTML, los comentarios y el espaciado no afectan directamente lo que se muestra en el navegador, pero son esenciales para la organización, legibilidad y mantenimiento del código.

  • Los comentarios sirven para documentar partes del código que no deseas que se vean en la página.

  • El espaciado en blanco (saltos de línea, sangrías y tabulaciones) no altera el resultado visual, pero hace que el código sea mucho más fácil de leer.

Etiquetas y elementos relacionados

  1. Comentarios en HTML ( <!-- comentario --> )
  • Uso: Insertar anotaciones o descripciones invisibles al navegador y al usuario final.
<!-- Este es un comentario -->
<p>Hola mundo</p>
  • Atributos: No tiene atributos.

  • Advertencia: Nunca uses // o /* */ como en otros lenguajes. En HTML solo se usa <!-- -->.

  1. Espaciado en blanco (espacios, tabulaciones, saltos de línea)
  • HTML ignora múltiples espacios, saltos de línea y tabulaciones. Es decir:
<p>Hola     mundo</p>

Se verá igual que:

<p>Hola mundo</p>
  • Para insertar espacios adicionales intencionales, se usa la entidad HTML:

    • &nbsp; → espacio no separable (non-breaking space)
Hola&nbsp;&nbsp;&nbsp;mundo
  • Para mostrar texto tal como fue escrito (con espacios y saltos de línea respetados), se puede usar la etiqueta <pre>:
<pre>
Línea 1
  Línea 2 con espacio
</pre>

Advertencias clave

  • Nunca pongas código HTML dentro de los comentarios. Aunque algunos navegadores lo ignoren, puede causar errores inesperados.
  • No confíes en los comentarios para ocultar información confidencial. El código fuente puede ser inspeccionado fácilmente por cualquier usuario.
  • Evita comentarios innecesarios o excesivos; usa solo los que agregan claridad.
  • Para separar visualmente partes del código, usa líneas en comentarios:
<!-- ========= Sección de Contacto ========= -->

Tema 5: Atributos globales y estructura de una etiqueta

En HTML, cada etiqueta sigue una estructura general:

<!-- todo esto es llamado elemento -->
<etiqueta atributo="valor">Contenido</etiqueta>

Hay atributos que son específicos de una etiqueta, pero también existen atributos globales que pueden usarse en casi todas las etiquetas HTML. Estos atributos permiten dar identidad, estilo, contexto, accesibilidad y funcionalidad al contenido.

Estructura de una etiqueta HTML

Partes de una etiqueta

<p class="intro" id="parrafo1" style="color:red;">Hola</p>
  1. <p>Etiqueta de apertura (indica que comienza un párrafo)

  2. class="intro" → Atributo global (clase CSS asociada)

  3. id="parrafo1" → Atributo global (identificador único)

  4. style="color:red;" → Atributo global (estilo en línea)

  5. Hola → Contenido del elemento

  6. </p>Etiqueta de cierre

Atributos globales más comunes

Estos atributos pueden aplicarse a casi cualquier etiqueta en HTML5:

Atributo Uso
id Identificador único del elemento en el documento.
class Permite agrupar elementos con un nombre común. Se usa con CSS y JS.
style Define estilos en línea (color, tamaño, márgenes).
title Muestra un texto emergente al pasar el mouse.
lang Idioma del contenido del elemento (ej. es, en).
hidden Oculta el elemento visualmente.
tabindex Controla el orden de navegación con el teclado.
draggable Define si el elemento puede ser arrastrado.
contenteditable Permite editar el contenido directamente desde el navegador.
data-* Define atributos personalizados para JS. Ej: data-user="juan"

Advertencias clave

  • Nunca repitas un mismo id en diferentes elementos del mismo documento.
  • Evita abusar de style. Se recomienda usar CSS externo o interno.
  • Usa class para agrupar estilos comunes; no pongas estilos directos si puedes evitarlo.
  • Los atributos data-* no tienen efecto visual por sí solos, pero son útiles en JavaScript.
  • hidden solo oculta visualmente, pero sigue existiendo en el DOM.

🧱 Nivel 1 - Estructura y Organización

Tema 6: Listas ordenadas, desordenadas y de definición

Las listas en HTML permiten organizar contenido relacionado de forma estructurada. Existen tres tipos principales:

  1. Listas ordenadas (<ol>): enumeran los ítems con números o letras.
  2. Listas desordenadas (<ul>): enumeran los ítems con viñetas.
  3. Listas de definición (<dl>): muestran pares de términos y descripciones.

Etiquetas HTML asociadas a este tema

  1. Lista desordenada ( <ul> )
  • Uso: Lista de ítems sin orden específico (usualmente con viñetas).

  • Atributos comunes:

    • type (obsoleto): define el tipo de viñeta (circle, square, disc). Mejor usar CSS.
    • class, id, style.
<ul>
  <li>HTML</li>
  <li>CSS</li>
  <li>JavaScript</li>
</ul>
  1. Lista ordenada ( <ol> )
  • Uso: Lista con ítems numerados (1, 2, 3...) o con letras.

  • Atributos comunes:

    • type: tipo de marcador (1, a, A, i, I).
    • start: número inicial.
    • reversed: invierte el orden (de mayor a menor).
<ol type="A" start="3">
  <li>Inicio</li>
  <li>Medio</li>
  <li>Fin</li>
</ol>
  1. Elemento de lista ( <li> )
  • Uso: Representa cada ítem dentro de <ul> o <ol>.

  • Atributos comunes: value (sólo en <ol>, permite personalizar el número).

<ol>
  <li value="10">Diez</li>
  <li>Once</li>
</ol>
  1. Lista de definición ( <dl> )
  • Uso: Lista de términos y definiciones ( pares término-descripción/pregunta-respuesta ).

  • Elementos relacionados:

    • <dt>: término a definir.
    • <dd>: definición del término.
<dl>
  <dt>HTML</dt>
  <dd>Lenguaje de marcado para la web.</dd>
  <dt>CSS</dt>
  <dd>Lenguaje de estilo para la web.</dd>
</dl>

Advertencias clave

  • Nunca pongas texto suelto directamente dentro de <ul> o <ol>. Siempre debe estar dentro de <li>.
  • Evita abusar de listas solo por sangrar contenido. Usa listas solo si los elementos realmente son ítems.
  • Para listas complejas (ej. con imágenes o botones dentro), sigue usando <li> para mantener la estructura semántica.
  • <ul> y <ol> no deben mezclarse dentro de la misma jerarquía sin cerrar correctamente las etiquetas.
  • Si solo tienes una lista de ítems sin una relación directa de término-descripción, usa <ul> (lista no ordenada) o <ol> (lista ordenada).
  • siempre que tengas contenido que se organice naturalmente en pares donde un elemento define, describe o da valor a otro, la etiqueta <dl> junto con <dt> y <dd> es la elección semánticamente correcta

Tema 7: Etiquetas semánticas de sección

HTML5 introdujo etiquetas semánticas que permiten describir claramente las distintas secciones de una página web. Estas etiquetas no solo organizan mejor el contenido, sino que también mejoran el SEO, la accesibilidad y la legibilidad del código.

En lugar de usar

para todo, estas etiquetas semánticas indican la función del contenido que contienen, lo cual ayuda tanto a los desarrolladores como a los motores de búsqueda.

Etiquetas HTML asociadas a este tema

  1. <header>
  • Uso: Representa el encabezado de una página o sección. Puede contener logos, menús, títulos, etc.

  • Atributos comunes: class, id, style

<header>
  <h1>Mi sitio web</h1>
  <nav>...</nav>
</header>
  1. <nav>
  • Uso: Define una sección de navegación principal o interna como un menu de navegacion (dentro del <header>) o un indice (dentro del <main>).

  • Atributos comunes: class, id, style

<nav>
  <ul>
    <li><a href="#inicio">Inicio</a></li>
    <li><a href="#nosotros">Nosotros</a></li>
  </ul>
</nav>
  1. <main>
  • Uso: Contiene el contenido principal del documento. Solo debe haber un <main> por página.

  • Atributos comunes: class, id, style

<main>
  <h2>Contenido principal</h2>
  <p>Aquí va lo más importante del sitio.</p>
</main>
  1. <section>
  • Uso: Agrupa contenido temáticamente relacionado. Generalmente, cada <section> debe tener un encabezado (un elemento <h1> - <h6>) que identifique el tema de esa sección.

  • Atributos comunes: class, id, style

<section>
  <h3>Servicios</h3>
  <p>Descripción de servicios.</p>
</section>
  1. <article>
  • Uso: Representa contenido independiente y reutilizable como un post, noticia o comentario.

  • Atributos comunes: class, id, style

<article>
  <h2>Título de una Entrada de Blog Principal</h2>
  <p>Contenido de la entrada...</p>

  <section>
    <h3>Comentarios</h3>
    <article class="comment">
      <h4>Usuario1 dice:</h4>
      <p>¡Gran artículo!</p>
    </article>
    <article class="comment">
      <h4>Usuario2 dice:</h4>
      <p>No estoy de acuerdo...</p>
    </article>
  </section>
</article>
  1. <aside>
  • Uso: Contenido complementario o relacionado, como una barra lateral, anuncios, widgets.

  • Atributos comunes: class, id, style

<aside>
  <h2>Artículos Relacionados</h2>
  <ul>
    <li><a href="#">Otro artículo interesante</a></li>
    <li><a href="#">Tema similar</a></li>
  </ul>
  <h2>Publicidad</h2>
  <img src="anuncio.jpg" alt="Anuncio">
</aside>
  1. <footer>
  • Uso: Se utiliza para marcar el contenido que funciona como el pie de página de un documento o de una sección particular.

  • Atributos comunes: class, id, style

<body>
  <header>
    <h1>Mi Blog Increíble</h1>
  </header>
  <main>
    <article>
      <h2>Un Artículo Interesante</h2>
      <p>Contenido del artículo...</p>
      <footer>
        <p>Publicado por: Juan Pérez el 5 de mayo de 2025</p>
        <p>Categorías: <a href="#">Tecnología</a>, <a href="#">Novedades</a></p>
      </footer>
    </article>
  </main>
  <footer>
    <p>&copy; 2025 Mi Blog Increíble. Todos los derechos reservados.</p>
    <address>
      Contacto: <a href="mailto:info@miblogincreible.com">info@miblogincreible.com</a>
    </address>
    <ul>
      <li><a href="/privacidad">Política de Privacidad</a></li>
      <li><a href="/terminos">Términos de Servicio</a></li>
    </ul>
  </footer>
</body>

Advertencias clave

  • Usa una sola etiqueta <main> por página.
  • No uses <section> sin encabezado (<h2>, <h3>, etc.).
  • Evita usar <div> si una etiqueta semántica puede expresar mejor la intención.
  • <article> es para contenido que tiene sentido por sí solo y podría distribuirse de forma independiente.

Tema 8: Enlaces e hipervínculos

Los enlaces o hipervínculos permiten conectar una página con otra, o con un recurso externo. Son una parte esencial de la navegación en la web.

Se crean con la etiqueta <a>, que significa anchor (ancla). Esta etiqueta puede enlazar:

  • A otras páginas del mismo sitio.
  • A secciones específicas de la misma página.
  • A sitios externos.
  • A archivos descargables.
  • A correos electrónicos o números telefónicos.

Etiqueta principal: <a>

Sintaxis básica

<a href="https://example.com">Texto del enlace</a>

Atributos más comunes

Atributo Descripción
href Define la URL o destino del enlace.
target Especifica dónde abrir el enlace: _self (por defecto), _blank (nueva pestaña), _parent, _top.
title Texto emergente al pasar el mouse.
download Indica que el archivo se debe descargar.
rel Define la relación con el recurso (nofollow, noopener, noreferrer, etc.). Importante para seguridad y SEO.

Ten en cuenta que:

Los enlaces pueden envolver imágenes, íconos, etc.:

<a href="https://twitter.com">
  <img src="logo-twitter.png" alt="Twitter">
</a>

Advertencias clave

  • Usa siempre target="_blank" con rel="noopener noreferrer" para enlaces externos por seguridad:
<a href="https://externo.com" target="_blank" rel="noopener noreferrer">Sitio externo</a>
  • No uses href="#" sin propósito. Puede causar problemas si no está controlado con JavaScript.
  • Asegúrate de usar alt en imágenes dentro de enlaces para accesibilidad.
  • No pongas enlaces vacíos: siempre debe haber contenido visible o accesible.

Tema 9: Imágenes y atributos relacionados

La etiqueta <img> permite insertar imágenes en una página web. Las imágenes hacen que el contenido sea más visual y atractivo, y también pueden ser utilizadas para transmitir información clave. A diferencia de otras etiquetas, <img> es autocontenida, lo que significa que no necesita etiqueta de cierre.

Etiqueta principal: <img>

Sintaxis básica

<img src="ruta/imagen.jpg" alt="Descripción de la imagen">

Atributos esenciales y comunes de <img>

Atributo Descripción
src Ruta de la imagen (relativa o absoluta). Obligatorio.
alt Texto alternativo si la imagen no carga o para lectores de pantalla. Obligatorio por accesibilidad.
title Texto emergente al pasar el cursor sobre la imagen.
width Ancho de la imagen (en px o %).
height Alto de la imagen.
loading Optimización de carga (lazy, eager, auto).
decoding Método de decodificación (sync, async, auto).
referrerpolicy Política de referencia de seguridad (no-referrer, etc.).
class, id, style Atributos globales para personalización.

Tipos de rutas para src

Ruta relativa:

<img src="img/logo.png" alt="Logo de la empresa">

Ruta absoluta (URL externa):

<img src="https://example.com/logo.png" alt="Logo externo">

Ten en cuenta estas buenas prácticas:

  • Usa imágenes optimizadas y de tamaño adecuado para evitar demoras de carga.
  • Siempre incluye un texto alt descriptivo pero conciso.
  • No pongas imágenes de fondo usando <img>. Usa CSS para eso.
  • Utiliza loading="lazy" para sitios con muchas imágenes (como catálogos o blogs).
  • Usa nombres de archivo claros y en minúsculas (producto-verde.jpg, no IMG1234.JPG).

Advertencias clave

  • Nunca dejes el atributo alt vacío sin motivo. Si la imagen es decorativa, entonces se justifica:

    <img src="decorativa.png" alt="">
  • No establezcas solo width o solo height sin mantener la proporción; puedes deformar la imagen.

  • Asegúrate de que las rutas de las imágenes sean correctas y estén bien organizadas.

  • Evita imágenes enormes si van a mostrarse pequeñas.

Tema 10: Tablas (estructura y atributos básicos)

Las tablas en HTML permiten organizar información en filas y columnas, como en una hoja de cálculo. Son útiles para mostrar datos estructurados como horarios, comparativas, inventarios, entre otros.

Una tabla se construye con varias etiquetas que definen su estructura.

Etiquetas HTML asociadas a este tema

  1. <table>
  • Uso: Define el inicio y fin de una tabla.

  • Atributos comunes:

    • border (obsoleto): crea borde simple. Mejor usar CSS.
    • class, id, style.
<table>...</table>
  1. <tr> — Table Row
  • Uso: Representa una fila de la tabla.
<tr>
  <td>Celda 1</td>
  <td>Celda 2</td>
</tr>
  1. <td> — Table Data
  • Uso: Representa una celda de datos.

  • Atributos comunes:

    • colspan: para que una celda ocupe varias columnas.
    • rowspan: para que una celda ocupe varias filas.
<td colspan="2">Celda que ocupa dos columnas</td>
  1. <th> — Table Header
  • Uso: Crea una celda de encabezado (se ve en negrita y centrado por defecto).

  • Atributos comunes: igual que <td>.

<th>Nombre</th>
  1. <thead>, <tbody>, <tfoot>
  • Uso: Agrupan secciones de la tabla para mejorar la estructura y accesibilidad.
<table>
  <thead> <!-- encabezado -->
    <tr>
      <th>Producto</th>
      <th>Precio</th>
    </tr>
  </thead>
  <tbody> <!-- contenido -->
    <tr>
      <td>Manzana</td>
      <td>S/ 2.50</td>
    </tr>
  </tbody>
  <tfoot> <!-- pie -->
    <tr>
      <td>Total</td>
      <td>S/ 2.50</td>
    </tr>
  </tfoot>
</table>

🧰 Nivel 2 - Formatos y Multimedia

Tema 11: Formateo de texto

HTML incluye varias etiquetas para formatear y resaltar partes del texto con distintos significados semánticos. No solo cambian el estilo visual (negrita, cursiva, subrayado), sino que también indican su propósito o importancia, lo que es fundamental para accesibilidad y SEO.

Estas etiquetas no deben usarse para dar estilo por apariencia visual solamente — para eso está el CSS — sino para señalar el significado del contenido.

Etiquetas HTML asociadas a este tema

  1. <strong>
  • Uso: Resalta texto con énfasis fuerte o importancia. Generalmente se muestra en negrita.

  • Equivalente semántico a decir "esto es muy importante".

<p><strong>Atención:</strong> Este producto es inflamable.</p>
  1. <em>
  • Uso: Añade énfasis a una palabra o frase. Generalmente se muestra en cursiva.

  • Equivalente a leer algo con entonación o énfasis emocional.

<p>Este producto es <em>realmente</em> útil.</p>
  1. <mark>
  • Uso: Resalta un fragmento de texto como si lo hubieras marcado con resaltador.

  • Muy útil en resultados de búsqueda o para destacar información.

<p>Busca la palabra <mark>clave</mark> en este texto.</p>
  1. <small>
  • Uso: Representa texto en tamaño más pequeño (nota al pie, aclaraciones).

  • Tiene valor semántico para cosas menos importantes.

<p>© 2025 Mi Empresa <small>Todos los derechos reservados</small></p>
  1. <del> y <ins>
  • <del>: Texto eliminado (tachado).
  • <ins>: Texto insertado (subrayado por defecto).
  • Útil en ediciones de contenido o historial de cambios.
<p>Precio anterior: <del>S/ 50</del> <ins>S/ 40</ins></p>
  1. <sub> y <sup>
  • <sub>: Subíndice (ej. fórmulas químicas: H2O).
  • <sup>: Superíndice (ej. potencias: x2).
<p>La fórmula es H<sub>2</sub>O y E = mc<sup>2</sup></p>
  1. <abbr>
  • Uso: Abreviaturas con significado. Al pasar el cursor, se muestra el texto completo.
  • Importante para accesibilidad.
<p>Estudio en la <abbr title="Universidad Peruana de Ciencias Aplicadas">UPC</abbr></p>
  1. <cite>
  • Uso: Cita el nombre de una obra, libro, película o publicación.
  • Generalmente se muestra en cursiva.
<p>Leí <cite>El Principito</cite> el año pasado.</p>
  1. <q>
  • Uso: Citas textuales breves. Agrega comillas automáticamente.
<p>Ella dijo: <q>No tengo tiempo para eso.</q></p>
  1. <blockquote>
  • Uso: Representa una cita larga o en bloque proveniente de otra fuente.
    A diferencia de <q>, que se usa para citas cortas en línea,
    <blockquote> se usa para fragmentos extensos y por defecto se muestra con sangría.

  • Atributos comunes:

    • cite: permite incluir la URL de la fuente original (opcional, no se muestra visualmente).
    • class, id, style: para aplicar estilos CSS.
<blockquote cite="https://www.nelsonmandela.org/">
  La educación es el arma más poderosa que puedes usar para cambiar el mundo.
</blockquote>

Aunque el atributo cite no se muestra directamente, proporciona valor semántico y puede ser utilizado por herramientas de accesibilidad o motores de búsqueda.

Advertencias clave

  • No uses <b> ni <i> solo para dar formato. Usa <strong> y <em> que tienen significado semántico.
  • Evita abusar de <mark> o <del> sin contexto real.
  • Usa alt + etiquetas semánticas juntas cuando involucren imágenes o íconos.
  • <sub> y <sup> no cambian el valor semántico por sí mismos. Solo son visuales.
  • Usa <blockquote> para textos de más de una oración o párrafos completos.
  • Usa <q> solo para frases breves dentro de una oración.
  • El atributo cite es opcional pero recomendable si se conoce la fuente.

Tema 12: Multimedia: video y audio en HTML

HTML5 permite incluir contenido multimedia de forma nativa, sin necesidad de plugins como Flash. Puedes insertar videos y audios directamente en tu página usando las etiquetas <video> y <audio>. Estas etiquetas son altamente configurables y compatibles con la mayoría de navegadores modernos.

Etiquetas HTML asociadas a este tema

  1. <video>
  • Uso: Insertar archivos de vídeo.
  • Atributos comunes:
Atributo Descripción
src Ruta del archivo de video (alternativamente se puede usar <source>).
controls Muestra los controles del reproductor.
autoplay Reproduce automáticamente (requiere muted para funcionar sin interacción).
muted Silencia el audio.
loop Reproduce el video en bucle.
poster Imagen que se muestra antes de que se reproduzca el video.
width, height Define el tamaño del reproductor.
preload Indica si se debe cargar el video con antelación (auto, metadata, none).
<video src="video.mp4" width="400" controls></video>
  1. <audio>
  • Uso: Insertar archivos de audio (como música, efectos, podcasts).
  • Atributos: similares a <video>.
<audio src="audio.mp3" controls></audio>

Advertencias clave

  • Siempre incluye controles si quieres que el usuario tenga el control sobre el contenido.
  • Algunos navegadores bloquean autoplay si no está silenciado (muted).
  • Incluye varios formatos (mp4, webm, ogg) para mayor compatibilidad.
  • No insertes contenido multimedia sin propósito claro: puede afectar la accesibilidad y el rendimiento.

Tema 13: Iframes y contenido embebido

Un iframe (inline frame) permite insertar otro documento HTML o contenido externo dentro de una página.

Es muy usado para mostrar videos de YouTube, mapas de Google, formularios, documentos PDF o incluso sitios web completos sin redirigir al usuario.

Etiquetas HTML principal: <iframe>

<iframe src="https://ejemplo.com" width="600" height="400"></iframe>

Atributos comunes de <iframe>

Atributo Descripción
src URL del contenido que se quiere incrustar.
width / height Dimensiones del iframe.
title Descripción del contenido (accesibilidad). Muy importante para accesibilidad.
loading Control de carga: lazy o eager.
allowfullscreen Permite que el contenido (como videos) se vea en pantalla completa.
referrerpolicy Controla el envío del encabezado Referer.
sandbox Restringe ciertas funciones del contenido embebido (seguridad).

Ejemplo común de uso de <iframe>

  1. YouTube (video embebido)
<iframe width="560" height="315"
    src="https://www.youtube.com/embed/dQw4w9WgXcQ"
    title="Video de YouTube"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
    allowfullscreen>
</iframe>

Puedes obtener este código desde el botón "Compartir > Insertar" en cualquier video de YouTube.

  1. Google Maps
<iframe
  src="https://www.google.com/maps/embed?pb=!1m18..."
  width="600"
  height="450"
  style="border:0;"
  allowfullscreen
  loading="lazy"
  referrerpolicy="no-referrer-when-downgrade">
</iframe>

Puedes obtener este iframe desde la opción "Compartir mapa > Insertar un mapa" en Google Maps.

  1. Mostrar un archivo PDF
<iframe 
  src="documento.pdf" 
  width="100%" 
  height="500" 
  title="Documento PDF">
</iframe>

Advertencias clave sobre <iframe>

  • No uses <iframe> para maquetar contenido del mismo sitio; solo para contenido externo o específico.
  • Algunos sitios como Instagram, Facebook o TikTok pueden bloquear iframes por políticas de seguridad (CORS).
  • Siempre proporciona un atributo title para accesibilidad.
  • Usa loading="lazy" para mejorar la velocidad de carga en páginas con varios iframes.
  • Agrega allowfullscreen solo si se necesita esa funcionalidad (por ejemplo, para videos).

Tema 14: Entidades HTML (símbolos especiales)

HTML utiliza ciertos caracteres para su propia sintaxis, como <, >, & y ". Para poder mostrar estos caracteres literalmente en la página, debes usar entidades HTML, que son combinaciones especiales que el navegador interpreta y reemplaza por el símbolo correspondiente.

También puedes usar entidades para insertar símbolos especiales, como signos de copyright, flechas, letras griegas, y más.

Sintaxis de una entidad HTML

&nombreEntidad;

O también:

&#códigoDecimal;

O :

&#xCódigoHexadecimal;

Entidades HTML comunes

Símbolo Entidad Descripción
< &lt; Menor que
> &gt; Mayor que
& &amp; Ampersand
" &quot; Comillas dobles
' &apos; Comilla simple (no soportada en todos los navegadores antiguos)
© &copy; Copyright
® &reg; Marca registrada
&euro; Euro
¥ &yen; Yen japonés
&rarr; Flecha derecha
&larr; Flecha izquierda
&uarr; Flecha arriba
&darr; Flecha abajo
± &plusmn; Más/menos
&infin; Infinito
&#10003; Check
× &times; Multiplicación
÷ &divide; División

Advertencias clave

  • No escribas directamente los símbolos <, >, & en tu contenido si no están dentro de etiquetas: usa entidades para evitar errores de interpretación.
  • No abuses de entidades decorativas que no aportan significado.
  • Las entidades no deben usarse para estilos visuales: usa CSS si solo quieres apariencia.
  • Algunas entidades solo funcionan con determinados conjuntos de caracteres. Asegúrate de tener <meta charset="UTF-8"> en tu <head>.

🧪 Nivel 3 - Formularios

Tema 15: Introducción a formularios y la etiqueta <form>

Los formularios en HTML permiten recopilar datos del usuario (como nombre, email, contraseña, selección de opciones, archivos, etc.). Son esenciales en sitios como tiendas, registros, encuestas o páginas de contacto.

Todo formulario comienza con la etiqueta <form>, que actúa como un contenedor de todos los campos interactivos y botones de envío.

Etiqueta principal: <form>

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

  <label for="email">Correo:</label>
  <input id="email" type="email" name="correo" required>

  <label for="mensaje">Mensaje:</label>
  <textarea id="mensaje" name="mensaje" rows="4" cols="40"></textarea>

  <button type="submit">Enviar</button>
</form>

Atributos más comunes de <form>

Atributo Descripción
action URL a la que se enviarán los datos (puede ser un archivo o endpoint).
method Método de envío: get (datos visibles en la URL) o post (más seguro).
target Dónde abrir la respuesta (_self, _blank, etc.).
autocomplete Activa/desactiva sugerencias del navegador (on, off).
novalidate Desactiva validaciones automáticas del navegador.

¿Cómo funciona un formulario?

  1. El usuario rellena los campos del formulario.
  2. El navegador envía los datos según el método (get o post).
  3. El servidor (o script de procesamiento) recibe los datos para procesarlos, almacenarlos o responder.

Notas adicionales

  • Todos los campos que recogen datos van dentro del <form>.
  • El atributo name en los campos es clave: define el nombre que se usará al enviar los datos.
  • Puedes enviar formularios incluso sin usar JavaScript. Solo con HTML.

Tema 16: Campos de entrada (<label>, <input>, <textarea>, <select>, <button>)

Los campos de entrada permiten a los usuarios interactuar con los formularios introduciendo texto, eligiendo opciones, subiendo archivos, entre otros. Todos deben estar contenidos dentro de una etiqueta <form> para que sus datos sean enviados correctamente.

Etiquetas HTML asociadas a este tema

  1. <label>
  • Uso: Asocia un texto descriptivo con un campo del formulario.

  • Ventajas:

    • Mejora la accesibilidad (lectores de pantalla).
    • Al hacer clic en el <label>, el campo asociado se activa.

  • Atributos:
Atributo Descripción
for ID del campo al que está asociado.
class, id, style Estilos y organización
<label for="nombre">Nombre:</label>
<input id="nombre" type="text" name="nombre">
  1. <input>
  • Uso: Campo versátil que cambia su comportamiento según el atributo type.

  • Tipos más comunes y sus usos:
type Descripción
text Texto de una sola línea
email Email con validación básica
password Campo oculto para contraseñas
number Solo números
date Selector de fecha
checkbox Casilla de verificación (sí/no)
radio Botones de opción única
file Selector de archivo
hidden Campo no visible (útil para datos ocultos)
range Selector tipo deslizador
color Selector de color
search Campo de búsqueda
tel Números telefónicos
url Validación de URLs
submit Botón para enviar formulario
reset Botón para limpiar campos

  • Atributos útiles:

  • name: Nombre del dato (obligatorio para enviar).

  • value: Valor por defecto o actual.

  • required: Hace obligatorio el campo.

  • placeholder: Texto guía.

  • min, max, step: Rango de valores para number, date, etc.

  • checked: Para checkbox y radio.

<input type="text" name="nombre" placeholder="Escribe tu nombre" required>
  1. <textarea>
  • Uso: Campo de texto multilínea (comentarios, descripciones, etc.).
  • Se debe cerrar con </textarea> y el contenido por defecto se coloca dentro.

  • Atributos:

  • name: Nombre del campo (clave al enviar).

  • rows: Número de filas visibles.

  • cols: Número de columnas visibles.

  • placeholder: Texto guía dentro del campo.

  • maxlength: Límite de caracteres permitidos.

  • required: Hace obligatorio completar el campo.

<textarea name="mensaje" rows="5" cols="40" placeholder="Escribe tu mensaje aquí"></textarea>
  1. <select> y <option>
  • Uso: Menú desplegable con una o varias opciones.
<label for="pais">País:</label>
<select id="pais" name="pais">
  <option value="pe">Perú</option>
  <option value="mx">México</option>
  <option value="ar">Argentina</option>
</select>
  • Atributos útiles para <select> y <option>:

  • multiple: permite seleccionar varias opciones.

  • selected: define el valor preseleccionado dentro de una etiqueta <option>.

  • disabled: indica que la opción está deshabilitada y no puede seleccionarse.

  1. <button>
  • Uso: Botón que puede enviar formularios, ejecutar scripts, o actuar como botón genérico.
<button type="submit">Enviar</button>
<button type="reset">Limpiar</button>
<button type="button">Solo botón</button>

Advertencias clave

  • No olvides el atributo name si vas a enviar los datos del campo.
  • Usa label correctamente: mejora la accesibilidad y la experiencia de usuario.
  • No uses button sin type si está dentro de un formulario: por defecto es submit.
  • Usa required, min, max, pattern para validaciones sin JavaScript.
  • Para campos multiselección (select multiple) recuerda que necesitas manejar los datos como una lista del lado del servidor.

Tema 17: Validación básica en formularios (sin JavaScript)

HTML5 proporciona validación automática y accesible directamente desde el navegador, sin necesidad de usar JavaScript. Esto permite asegurarse de que los usuarios ingresen información válida antes de enviar el formulario.

Las validaciones se definen a través de atributos en las etiquetas de formulario como <input>, <select>, <textarea>, etc.

Atributos de validación comunes

Atributo Aplicación Función
required Todos Campo obligatorio
min, max number, date, range Establece valores mínimo/máximo
maxlength, minlength text, email, password, etc. Longitud mínima/máxima
pattern text, tel, etc. Expresión regular (regex) para validar formato
step number, date, range Incremento permitido
type email, url, etc. Valida automáticamente el formato correspondiente
<form action="procesar.html" method="post">
    
    <!-- NOMBRE -->
    <label for="nombre">Nombre completo:</label><br>
    <input type="text" id="nombre" name="nombre" required minlength="3" maxlength="50" placeholder="Ej. Juan Pérez"><br><br>

    <!-- CORREO -->
    <label for="correo">Correo electrónico:</label><br>
    <input type="email" id="correo" name="correo" required placeholder="Ej. correo@ejemplo.com"><br><br>

    <!-- TELÉFONO -->
    <label for="telefono">Teléfono (9 dígitos):</label><br>
    <input type="tel" id="telefono" name="telefono" pattern="[0-9]{9}" required placeholder="Ej. 987654321" title="Debe contener exactamente 9 dígitos"><br><br>

    <!-- EDAD -->
    <label for="edad">Edad (18 a 99):</label><br>
    <input type="number" id="edad" name="edad" min="18" max="99" required><br><br>

    <!-- CONTRASEÑA -->
    <label for="clave">Contraseña (mínimo 8 caracteres, con letra y número):</label><br>
    <input type="password" id="clave" name="clave" 
      pattern="(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}" 
      title="Debe tener al menos 8 caracteres, una letra y un número" 
      required><br><br>

    <!-- COLOR -->
    <label for="color">Color favorito:</label><br>
    <input type="color" id="color" name="color"><br><br>

    <!-- FECHA DE NACIMIENTO -->
    <label for="fecha">Fecha de nacimiento:</label><br>
    <input type="date" id="fecha" name="fecha" required><br><br>

    <!-- SELECCIÓN DE PAÍS -->
    <label for="pais">País:</label><br>
    <select id="pais" name="pais" required>
      <option value="">-- Selecciona tu país --</option>
      <option value="pe">Perú</option>
      <option value="mx">México</option>
      <option value="ar">Argentina</option>
    </select><br><br>

    <!-- GÉNERO -->
    <p>Género:</p>
    <input type="radio" id="masculino" name="genero" value="M" required>
    <label for="masculino">Masculino</label>
    <input type="radio" id="femenino" name="genero" value="F">
    <label for="femenino">Femenino</label><br><br>

    <!-- INTERESES -->
    <p>Intereses:</p>
    <input type="checkbox" id="html" name="intereses" value="html">
    <label for="html">HTML</label>
    <input type="checkbox" id="css" name="intereses" value="css">
    <label for="css">CSS</label>
    <input type="checkbox" id="js" name="intereses" value="js">
    <label for="js">JavaScript</label><br><br>

    <!-- MENSAJE -->
    <label for="mensaje">Mensaje (opcional, máx. 300 caracteres):</label><br>
    <textarea id="mensaje" name="mensaje" maxlength="300" placeholder="Escribe algo..."></textarea><br><br>

    <!-- ARCHIVO -->
    <label for="cv">Sube tu CV (opcional):</label><br>
    <input type="file" id="cv" name="cv"><br><br>

    <!-- BOTONES -->
    <button type="submit">Enviar</button>
    <button type="reset">Limpiar</button>
  </form>

Advertencias clave

  • Estas validaciones funcionan antes de enviar el formulario, pero no reemplazan la validación del lado del servidor (por seguridad).

  • pattern usa expresiones regulares, que son potentes pero pueden ser complejas. Valida bien su sintaxis.

  • Si el navegador no soporta un tipo de validación, puede comportarse como un campo de texto común
    (aunque todos los navegadores modernos las soportan).

  • Usa placeholder como ayuda visual, pero no como reemplazo del label.

About

🧠 Guía completa para dominar HTML desde cero: aprende el uso correcto de las etiquetas, buenas prácticas semánticas y fundamentos de SEO .

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages