Saltar al contenido
chuleta.html · devschool

Chuleta de HTML

Curso de HTML

Resumen de consulta rápida con las etiquetas y atributos de HTML5 que más vas a usar. Cada apartado enlaza a la lección donde se explica con calma.

Estructura básica

<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Mi página</title>
  </head>
  <body>
    <h1>Hola, mundo</h1>
  </body>
</html>
CódigoQué hace
<!DOCTYPE html>Declara HTML5; siempre en la primera línea
<html lang="es">Elemento raíz; lang indica el idioma
<head>Información sobre la página (no se ve)
<body>Todo el contenido visible
<p>Texto</p>Elemento: etiqueta de apertura, contenido y cierre
<br>, <img>, <input>Elementos vacíos: sin etiqueta de cierre
<a href="/">Atributo: nombre="valor" en la etiqueta de apertura
<input disabled>Atributo booleano: basta con escribirlo
<!-- comentario -->Comentario; el navegador lo ignora

Más en: ¿Qué es HTML?, Estructura básica, Etiquetas y atributos

El head y metadatos

CódigoQué hace
<meta charset="utf-8">Codificación: tildes y eñes sin símbolos raros
<meta name="viewport" content="width=device-width, initial-scale=1">Adapta la página al ancho del móvil
<title>Texto de la pestaña y título en Google
<meta name="description" content="...">Resumen que puede mostrar Google
<link rel="stylesheet" href="estilos.css">Enlaza una hoja de estilos
<link rel="icon" href="favicon.svg">Icono de la pestaña (favicon)
<script src="app.js" defer></script>Carga JavaScript sin bloquear la página
<style>CSS escrito dentro del propio HTML
<meta property="og:title" content="...">Título al compartir en redes (Open Graph)
<link rel="canonical" href="...">URL principal de la página (SEO)
<base href="...">URL base para todas las rutas relativas

Más en: El head y metadatos

Atributos globales

CódigoQué hace
id="menu"Identificador único en la página
class="boton activo"Una o varias clases para CSS y JS
style="color: red"CSS en línea (úsalo poco)
title="Más info"Texto de ayuda al pasar el ratón
lang="en"Idioma de ese elemento
hiddenOculta el elemento
data-precio="20"Dato propio; en JS: elemento.dataset.precio
tabindex="0"Hace enfocable un elemento con el teclado
contenteditablePermite editar el texto en el navegador
dir="rtl"Dirección del texto (derecha a izquierda)
translate="no"Pide que no se traduzca el contenido

Más en: Atributos globales

Textos, bloque y en línea

CódigoQué hace
<h1> … <h6>Títulos por nivel; un solo h1 por página
<p>Párrafo
<br>Salto de línea dentro de un texto
<hr>Separación temática entre bloques
<strong>Importancia (negrita)
<em>Énfasis (cursiva)
<b>, <i>Negrita o cursiva sin significado especial
<mark>Texto resaltado
<small>Letra pequeña, avisos legales
<del>, <ins>Texto eliminado y añadido
<sub>, <sup>Subíndice (H2O) y superíndice
<code>, <pre>Código en línea y texto preformateado
<kbd>Tecla o atajo de teclado
<blockquote cite="...">, <q>Cita en bloque y cita corta
<abbr title="...">Abreviatura con su significado
<time datetime="2026-10-01">Fecha legible por máquinas
<div>Contenedor de bloque genérico
<span>Contenedor en línea genérico

Los elementos de bloque (div, p, h1, ul…) ocupan todo el ancho y empiezan en línea nueva. Los en línea (span, a, strong, img…) solo ocupan lo que su contenido.

Más en: Títulos y párrafos, Bloque y en línea

Enlaces y rutas

CódigoQué hace
<a href="https://ejemplo.com">Enlace a otra web (ruta absoluta)
<a href="contacto.html">Enlace a un archivo de la misma carpeta
<a href="#precios">Salta al elemento con id="precios"
<a href="otra.html#precios">Salta a una sección de otra página
target="_blank"Abre en una pestaña nueva
rel="noopener noreferrer"Protege al abrir enlaces externos en pestaña nueva
<a href="mailto:hola@ejemplo.com">Abre el correo
<a href="tel:+34600000000">Llama por teléfono (móvil)
<a href="menu.pdf" download>Descarga el archivo
img/logo.pngRuta relativa: carpeta img junto al archivo actual
../index.htmlSube una carpeta
./estilos.cssCarpeta actual (igual que estilos.css)
/css/estilos.cssRuta desde la raíz del sitio

Más en: Enlaces, Rutas

Imágenes y multimedia

CódigoQué hace
<img src="foto.jpg" alt="Descripción">Imagen; alt es obligatorio
alt=""Imagen decorativa: los lectores de pantalla la saltan
width="800" height="600"Tamaño real; evita saltos al cargar
loading="lazy"Carga la imagen solo al acercarse a ella
<figure> + <figcaption>Imagen (o código, gráfico) con pie de foto
srcset="foto-800.jpg 800w, foto-1600.jpg 1600w"Varias resoluciones; el navegador elige
sizes="(max-width: 600px) 100vw, 50vw"Ancho que ocupará la imagen en pantalla
<picture> + <source>Otra imagen u otro formato según el caso
<video src="v.mp4" controls>Vídeo con controles
<audio src="a.mp3" controls>Audio con controles
autoplay muted loopReproducción automática (exige muted) y en bucle
poster="portada.jpg"Imagen del vídeo antes de reproducirlo
<track kind="subtitles" src="es.vtt" srclang="es">Subtítulos
<iframe src="..." title="Mapa">Inserta otra página (mapa, vídeo de YouTube)
<picture>
  <source srcset="foto.avif" type="image/avif">
  <source srcset="foto.webp" type="image/webp">
  <img src="foto.jpg" alt="Sala de escalada" width="800" height="533">
</picture>

Más en: Imágenes, Imágenes responsive, Audio, vídeo e iframes

Listas

CódigoQué hace
<ul>Lista sin orden (viñetas)
<ol>Lista ordenada (números)
<li>Cada elemento de la lista
<ol type="a">Numeración con letras (1, a, A, i, I)
<ol start="5">Empieza a contar en 5
<ol reversed>Cuenta hacia atrás
<dl>, <dt>, <dd>Lista de descripciones: término y definición
<ul>
  <li>Frutas
    <ul>
      <li>Manzana</li>
    </ul>
  </li>
</ul>

Más en: Listas

Tablas

CódigoQué hace
<table>Tabla
<caption>Título de la tabla
<thead>, <tbody>, <tfoot>Cabecera, cuerpo y pie
<tr>Fila
<th>Celda de cabecera
<td>Celda de datos
scope="col" / scope="row"Indica si el th es de columna o de fila
colspan="2"La celda ocupa dos columnas
rowspan="3"La celda ocupa tres filas
<table>
  <caption>Notas</caption>
  <thead>
    <tr><th scope="col">Alumno</th><th scope="col">Nota</th></tr>
  </thead>
  <tbody>
    <tr><td>Lucía</td><td>8,5</td></tr>
  </tbody>
</table>

Más en: Tablas

Formularios

CódigoQué hace
<form action="/enviar" method="post">Formulario: a dónde y cómo se envía
<label for="email">Texto asociado al campo con ese id
<input type="text" name="nombre">Campo de texto; name es la clave al enviar
type="email", "tel", "url"Texto con teclado y formato adaptados
type="password"Oculta lo que se escribe
type="number", "range"Número o deslizador (min, max, step)
type="date", "time"Selector de fecha u hora
type="checkbox"Casilla de verificación
type="radio"Opción única (mismo name en el grupo)
type="file"Subir archivos (accept, multiple)
type="color", "search", "hidden"Color, búsqueda y dato oculto
<textarea rows="4">Texto de varias líneas
<select> + <option value="...">Lista desplegable
<optgroup label="...">Agrupa opciones de un select
<datalist>Sugerencias para un input (atributo list)
<fieldset> + <legend>Agrupa campos con un título
<button type="submit">Envía el formulario
<button type="button">Botón que no envía (para JS)
<button type="reset">Vacía el formulario
placeholder="..."Texto de ejemplo dentro del campo
value="..."Valor inicial
checked, selectedCasilla u opción marcada al cargar
readonly, disabledSolo lectura; desactivado (no se envía)
autocomplete="email"Ayuda al navegador a autorrellenar
<form action="/suscribir" method="post">
  <label for="email">Correo</label>
  <input type="email" id="email" name="email" required>
  <button type="submit">Suscribirme</button>
</form>

Más en: Formularios

Validar formularios

CódigoQué hace
requiredCampo obligatorio
minlength="8", maxlength="20"Longitud mínima y máxima del texto
min="1", max="10"Valor mínimo y máximo (números y fechas)
step="0.5"Incremento permitido
pattern="[0-9]{5}"Expresión regular que debe cumplir (código postal)
type="email" / "url"Valida el formato automáticamente
novalidateEn el form: desactiva la validación del navegador
formnovalidateEn un botón: envía sin validar
aria-describedby="ayuda-cp"Asocia el campo con su texto de ayuda

Recuerda: la validación HTML es comodidad para el usuario; el servidor siempre debe validar de nuevo.

Más en: Validar formularios

HTML semántico

CódigoQué hace
<header>Cabecera de la página o de una sección
<nav>Menú de navegación principal
<main>Contenido principal; uno por página
<section>Sección temática con su título
<article>Contenido independiente (noticia, tarjeta, post)
<aside>Contenido secundario o lateral
<footer>Pie de página o de sección
<address>Datos de contacto
<search>Zona de búsqueda (reciente; puedes usar <form role="search">)
<body>
  <header>
    <nav>...</nav>
  </header>
  <main>
    <article>...</article>
    <aside>...</aside>
  </main>
  <footer>...</footer>
</body>

Más en: HTML semántico

details, dialog, SVG y canvas

CódigoQué hace
<details> + <summary>Bloque desplegable sin JavaScript
<details open>Aparece ya abierto
<details name="faq">Acordeón: solo uno abierto del grupo
<dialog>Ventana modal o cuadro de diálogo
dialog.showModal() / dialog.close()Abre como modal y cierra (JavaScript)
<form method="dialog">Cierra el diálogo al enviarlo
<svg viewBox="0 0 100 100">Gráfico vectorial que escala sin perder calidad
<circle>, <rect>, <path>Formas básicas de SVG
<canvas id="lienzo">Lienzo para dibujar con JavaScript
<progress value="70" max="100">Barra de progreso
<meter value="0.6">Medida dentro de un rango
<details>
  <summary>¿Hace falta experiencia?</summary>
  <p>No, empezamos desde cero.</p>
</details>

Más en: details y dialog, SVG y canvas

Accesibilidad

CódigoQué hace
alt="..."Describe la imagen a quien no puede verla
<label for="...">Todo campo necesita su etiqueta
<button> en vez de <div onclick>Enfocable y usable con teclado
aria-label="Cerrar"Nombre accesible si no hay texto visible
aria-labelledby="id"Usa otro elemento como nombre
aria-hidden="true"Oculta a lectores de pantalla (iconos decorativos)
aria-expanded="false"Indica si un menú está abierto
aria-live="polite"Anuncia cambios de contenido
aria-current="page"Marca el enlace de la página actual
role="alert"Mensaje importante que se anuncia al momento
<a href="#contenido">Saltar al contenido</a>Enlace para saltar el menú con teclado

Primera regla de ARIA: si existe un elemento HTML nativo que ya hace lo que necesitas, úsalo en lugar de ARIA.

Más en: Accesibilidad

Caracteres especiales y buenas prácticas

CódigoQué hace
&lt; &gt;Símbolos < y >
&amp;Símbolo &
&quot;Comillas dobles dentro de un atributo
&nbsp;Espacio que no se parte (10 km)
&copy;Símbolo de copyright
&euro;Símbolo del euro
&#8594;Carácter por su número (flecha a la derecha)
Minúsculas y comillas dobles<img src="a.jpg">, no <IMG SRC=a.jpg>
Sangría de 2 espaciosCada nivel anidado, un poco más a la derecha
Cierra en orden inverso<p><strong>...</strong></p>
Nombres de archivo sin espaciossobre-nosotros.html, no Sobre Nosotros.html
HTML para contenido, CSS para aspectoNo uses <br> ni <h3> para dar estilo
Valida tu códigoValidador del W3C: validator.w3.org

Más en: Caracteres especiales, Buenas prácticas, Proyecto: tu web

HTML · devschool.es/chuletas/html/