📘 Curso HTML · Nivel N1 Principiante total

Bloque 1: Primeros pasos

En este bloque descubrirás qué es HTML y cómo funciona la web por dentro, aprenderás la anatomía de un documento y escribirás tus primeras páginas con títulos, textos, listas, enlaces e imágenes. Sin prisa y desde cero: cada lección se apoya en la anterior.

⏱ ≈ 8 horas 📚 4 lecciones ✍️ 10 ejercicios guiados 📝 Examen final superable (≥ 70 %)
Lección 1 · Teoría

¿Qué es HTML y cómo funciona internet?

HTML son las siglas de HyperText Markup Language (Lenguaje de Marcado de Hipertexto). Es el idioma con el que se construye todas las páginas web del mundo: define la estructura y el significado del contenido (títulos, párrafos, imágenes, enlaces…).

⚠️ Ojo: HTML no es un lenguaje de programación. No tiene variables, condiciones ni bucles. Es un lenguaje de marcado: etiqueta el contenido para decirle al navegador «esto es un título», «esto es un párrafo», «esto es un enlace».

1.1 · Un poco de historia

HTML fue creado por Tim Berners-Lee en 1991 en el CERN, junto con la propia World Wide Web. Desde entonces ha evolucionado hasta HTML5, el estándar actual, mantenido por el consorcio WHATWG. Lo mejor: todo lo que aprendiste hace 15 años sigue funcionando; la web nunca rompe lo antiguo.

1.2 · El viaje de una página web

Cuando escribes www.google.com en el navegador ocurre esto en menos de un segundo:

  1. DNS: el navegador pregunta a un «agenda telefónica» de internet qué dirección IP corresponde a ese dominio.
  2. Petición HTTP: tu navegador (el cliente) pide la página al servidor donde está alojada.
  3. Respuesta: el servidor envía de vuelta un archivo HTML (junto con CSS, JavaScript e imágenes).
  4. Renderizado: el navegador lee el HTML, construye el DOM, aplica los estilos y pinta la página en pantalla.
Tecnologías que intervienen en una página
TecnologíaRolEjemplo
HTMLEstructura y significado (el esqueleto)<h1>, <p>, <a>
CSSPresentación y diseño (la piel)colores, tamaños, posiciones
JavaScriptComportamiento e interactividad (los músculos)menús, formularios dinámicos

1.3 · Tu caja de herramientas

Necesitas muy poco para empezar, y todo es gratuito:

  • Un editor de código: recomendamos Visual Studio Code (o Sublime Text, Notepad++…). Nada de Word: introduce caracteres invisibles que rompen el HTML.
  • Un navegador moderno: Chrome, Firefox o Edge. Todos incluyen las DevTools (tecla F12) para inspeccionar cualquier web.
  • Una carpeta de trabajo: crea por ejemplo mi-web/ en el escritorio. Ahí vivirán todos tus archivos.
💡 Truco profesional: guarda siempre tu página principal con el nombre index.html. Los servidores buscan automáticamente ese nombre como puerta de entrada.
Lección 2 · Teoría

Estructura de un documento HTML

Todo documento HTML respeta este esqueleto. Grábalo en la memoria: lo escribirás miles de veces.

index.html — plantilla base
<!DOCTYPE html>
<html lang="es">

  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Mi primera página</title>
  </head>

  <body>
    <h1>¡Hola, mundo!</h1>
    <p>Esta es mi primera página web.</p>
  </body>

</html>
Línea a línea
Línea¿Para qué sirve?
<!DOCTYPE html>Declara que el documento usa HTML5. Siempre va primero.
<html lang="es">Etiqueta raíz. lang indica el idioma (accesibilidad y SEO).
<head>Zona invisible: configuración y metadatos de la página.
<meta charset="UTF-8">Codificación de caracteres: permite tildes, ñ y emojis.
<meta viewport…>Hace que la página se adapte a móviles.
<title>Título de la pestaña del navegador (y resultado de Google).
<body>Todo lo visible de la página vive aquí.

2.1 · Anatomía de una etiqueta

Una etiqueta puede tener etiqueta de apertura, contenido, etiqueta de cierre y opcionalmente atributos:

  • Atributos globales útiles: id (identificador único), class (grupo de estilos), title (tooltip al pasar el ratón).
  • Etiquetas vacías: algunas no tienen cierre ni contenido porque no envuelven nada: <br>, <hr>, <img>, <meta>.
  • Comentarios: notas invisibles para humanos: <!-- esto no se muestra -->.

2.2 · Anidación correcta

Las etiquetas se anidan como muñecas rusas: la última en abrirse es la primera en cerrarse.

❌ incorrecto
<p>Texto con <strong>negrita</p></strong>
✅ correcto
<p>Texto con <strong>negrita</strong></p>
💡 Usa sangría de 2 espacios por nivel de anidación. Tu yo del futuro (y tus compañeros de equipo) te lo agradecerán.
Lección 3 · Teoría

Encabezados, párrafos, énfasis y listas

3.1 · Los seis niveles de encabezado

De <h1> (el más importante) a <h6>. Son la columna vertebral semántica de la página: los buscadores y lectores de pantalla los usan para navegar.

✅ Una sola etiqueta <h1> por página, con el tema principal.
✅ Respeta la jerarquía: h1 → h2 → h3… sin saltarte niveles.
❌ Nunca uses encabezados «porque se ven grandes»: eso es trabajo del CSS.

3.2 · Párrafos y saltos

párrafos.html
<p>Este es un párrafo normal. El navegador ignora los
saltos de línea extra y los espacios repetidos.</p>

<p>Poema con salto forzado:<br>
verde que te quiero verde.</p>

<hr> <!-- separador temático entre secciones -->

3.3 · Énfasis con significado

EtiquetaSignificadoApariencia
<strong>Importancia real (avisos, advertencias)negrita
<b>Solo visual, sin importancia añadidanegrita
<em>Énfasis al leer (cambia el sentido de la frase)cursiva
<i>Términos técnicos, títulos, palabras extranjerascursiva
<mark>Texto resaltadofondo amarillo
<small>Letra pequeña: notas legalesmás pequeña
<del> / <ins>Eliminado / insertado (ediciones)tachado / subrayado
<sub> / <sup>Subíndice / superíndiceH₂O · m²
⚠️ Regla de oro: si algo tiene significado (importancia o énfasis), usa <strong>/<em>. Si solo quieres cambiar cómo se ve, deja esa tarea para CSS.

3.4 · Las tres familias de listas

ul — sin orden
<ul>
  <li>Manzanas</li>
  <li>Pan</li>
  <li>Café</li>
</ul>
ol — ordenada
<ol>
  <li>Precalienta el horno</li>
  <li>Mezcla los ingredientes</li>
  <li>Hornea 30 min</li>
</ol>
dl — definiciones
<dl>
  <dt>HTML</dt>
  <dd>Lenguaje de marcado web</dd>
  <dt>CSS</dt>
  <dd>Lenguaje de estilos</dd>
</dl>

Las listas pueden anidarse (una lista dentro de un <li>) y las ordenadas aceptan atributos: start="5" (empieza en 5), reversed (cuenta atrás), type="A|a|I|i|1".

Lección 4 · Teoría

Enlaces, imágenes y rutas

4.1 · Enlaces: la «hyper» parte del hipertexto

enlaces.html
<!-- externo, abre en pestaña nueva -->
<a href="https://developer.mozilla.org" target="_blank" rel="noopener">MDN Web Docs</a>

<!-- interno, salta a una sección con id -->
<a href="#contacto">Ir al contacto</a>

<!-- otros protocolos útiles -->
<a href="mailto:hola@tecnicoweb.es">Escríbenos</a>
<a href="tel:+34900000000">Llámanos</a>
⚠️ Cuando uses target="_blank" añade siempre rel="noopener": es una medida de seguridad y rendimiento obligatoria.

4.2 · Imágenes

imagenes.html
<figure>
  <img src="imagenes/gato.jpg"
       alt="Gato naranja durmiendo sobre un teclado"
       width="600" height="400"
       loading="lazy">
  <figcaption>Mi supervisor de código</figcaption>
</figure>
  • alt es obligatorio: describe la imagen para personas ciegas y cuando el archivo falla. Si la imagen es decorativa: alt="".
  • width y height reservan el espacio y evitan «saltos» al cargar.
  • loading="lazy" retrasa la carga de imágenes fuera de pantalla.
Formatos de imagen
FormatoIdeal para…
JPGFotografías (millones de colores)
PNGTransparencias, capturas, logos sencillos
SVGVectores: logos e iconos (escalan sin perder calidad)
WebPModerno: misma calidad, mucho más ligero

4.3 · Rutas relativas vs absolutas

Imagina esta estructura de carpetas:

mi-web/
├── index.html
├── sobre-mi.html
├── imagenes/
│   ├── logo.png
│   └── fotos/
│       └── vacaciones.jpg
└── paginas/
    └── contacto.html
Desde…Quiero llegar a…Ruta que escribo
index.htmllogo.pngimagenes/logo.png
index.htmlvacaciones.jpgimagenes/fotos/vacaciones.jpg
sobre-mi.htmlcontacto.htmlpaginas/contacto.html
paginas/contacto.htmllogo.png../imagenes/logo.png
cualquieraGoogle (fuera)https://www.google.com
  • ./ = esta misma carpeta (opcional), ../ = sube un nivel.
  • Absoluta: empieza por https:// — apunta fuera de tu proyecto.
  • Usa siempre minúsculas y sin espacios en nombres de archivos: mi-foto.jpg, nunca Mi Foto.JPG.
💡 Diferencia clave: la ruta absoluta depende de internet; la relativa funciona igual en tu ordenador y en el servidor. Dentro de tu proyecto, casi siempre usarás rutas relativas.
Práctica guiada

✍️ Los 10 ejercicios del bloque

Hazlos en orden: están diseñados para encadenar conceptos. Intenta resolverlos antes de mirar la solución — equivocarse es parte del método.

1 Mi primera página

Crea index.html con la plantilla base completa: idioma español, UTF-8, título «Portafolio de [tu nombre]» y en el cuerpo un <h1> con tu nombre y un párrafo presentándote en 2 líneas.

Ver solución
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <title>Portafolio de Ana García</title>
</head>
<body>
  <h1>Ana García</h1>
  <p>Soy futura desarrolladora web y estoy aprendiendo
  HTML con Técnico Web. Me encanta la música y el café.</p>
</body>
</html>

2 Detective de errores

Este código tiene 5 errores. Encuéntralos y corrígelos:

<!DOCTYPE Html>
<html>
<body>
  <h2>Bienvenido</h1>
  <p>Gracias por visitar <strong>mi web.</p></strong>
  <img src="foto.jpg">
</html>
Ver solución
  1. Falta <head> con <meta charset="UTF-8"> (y DOCTYPE debe ser exactamente <!DOCTYPE html>, en minúsculas).
  2. El primer título debería ser <h1> (jerarquía): abre h1 y cierra h1.
  3. Anidación cruzada: debe cerrar </strong> antes de </p>.
  4. La imagen necesita el atributo alt descriptivo.
  5. Falta cerrar </body> antes de </html>.
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <title>Bienvenido</title>
</head>
<body>
  <h1>Bienvenido</h1>
  <p>Gracias por visitar <strong>mi web.</strong></p>
  <img src="foto.jpg" alt="Foto de bienvenida">
</body>
</html>

3 Jerarquía de títulos rota

Reordena estos encabezados para que la jerarquía sea coherente: «Mi restaurante» (principal), «Carta» y «Horario» (secciones), dentro de Carta: «Entrantes» y «Postres», y dentro de Postres: «Helados».

Ver solución
<h1>Mi restaurante</h1>
  <h2>Carta</h2>
    <h3>Entrantes</h3>
    <h3>Postres</h3>
      <h4>Helados</h4>
  <h2>Horario</h2>

4 Artículo con énfasis semántico

Escribe un párrafo sobre tu película favorita que incluya: su título en cursiva técnica (<i>), una palabra con importancia real, un énfasis (<em>), una fecha resaltada con <mark>, H2O o m² usando sub/sup, y una nota legal en <small>.

Ver solución
<p>La película <i>Interstellar</i> se estrenó en
<mark>2014</mark> y es <strong>imprescindible</strong>
para cualquier aficionado a la ciencia ficción. Sus paisajes
de planetas helados miden kilómetros² (<sup>2</sup>)
y el agua de su océano gigante sería H<sub>2</sub>O pura.
Lo <em>mejor</em> es verla sin saber nada del giro final.
<small>*Opinión personal del autor.</small></p>

5 La receta perfecta

Construye una receta con: lista de ingredientes (sin orden), pasos numerados que empiecen en 1, y una sublista dentro del paso 2 con tres ingredientes concretos. Añade también una nota final tachando un ingrediente sustituido (<del> + <ins>).

Ver solución
<h2>Tortilla de patatas</h2>

<h3>Ingredientes</h3>
<ul>
  <li>4 huevos</li>
  <li>3 patatas</li>
  <li><del>Cebolla</del> <ins>(opcional)</ins></li>
  <li>Aceite de oliva</li>
</ul>

<h3>Preparación</h3>
<ol>
  <li>Pelar y trocear las patatas.</li>
  <li>Freír a fuego medio:
    <ul>
      <li>patatas primero,</li>
      <li>añadir la cebolla a mitad,</li>
      <li>escurrir bien el aceite.</li>
    </ul>
  </li>
  <li>Batir los huevos y mezclar todo.</li>
  <li>Cuajar la tortilla 3 min por cara.</li>
</ol>

6 Menú con navegación interna

Crea una página con tres secciones identificadas con id («inicio», «servicios», «contacto») y un menú superior de lista con enlaces que salten a cada sección.

Ver solución
<ul class="menu">
  <li><a href="#inicio">Inicio</a></li>
  <li><a href="#servicios">Servicios</a></li>
  <li><a href="#contacto">Contacto</a></li>
</ul>

<h2 id="inicio">Inicio</h2>
<p>Contenido de inicio…</p>

<h2 id="servicios">Servicios</h2>
<p>Lista de servicios…</p>

<h2 id="contacto">Contacto</h2>
<p>Formulario de contacto…</p>

7 Glosario de términos

Define con <dl> cinco términos: navegador, servidor, DNS, HTTP y DOM.

Ver solución
<dl>
  <dt>Navegador</dt>
  <dd>Programa que interpreta el HTML y pinta la página.</dd>
  <dt>Servidor</dt>
  <dd>Ordenador que almacena las webs y responde a peticiones.</dd>
  <dt>DNS</dt>
  <dd>Sistema que traduce dominios a direcciones IP.</dd>
  <dt>HTTP</dt>
  <dd>Protocolo con el que cliente y servidor se comunican.</dd>
  <dt>DOM</dt>
  <dd>Árbol de objetos que el navegador crea a partir del HTML.</dd>
</dl>

8 Tarjeta de contacto hiperconectada

Crea una tarjeta con: enlace externo a LinkedIn que abra en pestaña nueva (con rel="noopener"), un mailto: con asunto, un tel: y un enlace interno que suba al principio de la página.

Ver solución
<p id="top"><a href="#tarjeta">↓ Ir a la tarjeta</a></p>

<div id="tarjeta">
  <h3>Ana García — Desarrolladora web</h3>
  <ul>
    <li><a href="https://linkedin.com/in/ana-garcia"
         target="_blank" rel="noopener">Perfil de LinkedIn</a></li>
    <li><a href="mailto:ana@ejemplo.com?subject=Hola%20Ana">ana@ejemplo.com</a></li>
    <li><a href="tel:+34600111222">+34 600 11 12 22</a></li>
    <li><a href="#top">↑ Volver arriba</a></li>
  </ul>
</div>

9 Galería accesible

Monta una galería con <figure> usando las ilustraciones locales ../img/html.svg y ../img/css.svg (¡rutas relativas hacia arriba!), cada una con alt, dimensiones fijas, loading="lazy" y su <figcaption>.

Ver solución
<figure>
  <img src="../img/html.svg"
       alt="Ilustración de un navegador con etiquetas HTML"
       width="400" height="250" loading="lazy">
  <figcaption>Lección 1–2: estructura y etiquetas</figcaption>
</figure>

<figure>
  <img src="../img/css.svg"
       alt="Ilustración de paneles de diseño con pincel dorado"
       width="400" height="250" loading="lazy">
  <figcaption>Adelanto del curso de CSS</figcaption>
</figure>

10 🏆 Proyecto integrador: «sobre-mi.html»

Une todo el bloque en una página personal situada en mi-web/paginas/sobre-mi.html. Requisitos:

  • Plantilla completa (DOCTYPE, lang, UTF-8, viewport, title propio)
  • Jerarquía de títulos correcta (un h1, varias secciones h2)
  • Un párrafo con strong, em y mark
  • Una lista de hobbies y otra ordenada con tus objetivos (start en 2026)
  • Imagen local con ruta correcta ../imagenes/foto.jpg dentro de figure
  • Enlace externo con target_blank+noopener, un mailto y un ancla interna
  • Un glosario dl con 3 conceptos aprendidos
Ver solución orientativa
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Sobre mí — Ana García</title>
</head>
<body>
  <h1>Ana García</h1>
  <p>Aprendiendo a programar con <strong>Técnico Web</strong>.
     Mi objetivo <em>real</em> es trabajar como desarrolladora.
     <mark>Meta 2026: mi primer empleo IT</mark></p>

  <h2>Mis aficiones</h2>
  <ul>
    <li>Escalada</li>
    <li>Cine de ciencia ficción</li>
  </ul>

  <h2>Mis objetivos</h2>
  <ol start="2026">
    <li>Dominar HTML y CSS</li>
    <li>Crear mi portafolio</li>
    <li>Primer empleo como developer junior</li>
  </ol>

  <h2>Mi foto</h2>
  <figure>
    <img src="../imagenes/foto.jpg"
         alt="Retrato de Ana sonriendo"
         width="300" height="300">
    <figcaption>Yo, en modo concentración</figcaption>
  </figure>

  <h2>Contacto</h2>
  <p><a href="https://github.com/anagarcia" target="_blank" rel="noopener">GitHub</a>
     · <a href="mailto:ana@ejemplo.com">Email</a></p>

  <h2>Glosario</h2>
  <dl>
    <dt>Etiqueta</dt>
    <dd>Marcado que da significado al contenido.</dd>
    <dt>Ruta relativa</dt>
    <dd>Dirección de un archivo respecto a la página actual.</dd>
    <dt>DOM</dt>
    <dd>Estructura en árbol que genera el navegador.</dd>
  </dl>
</body>
</html>
Evaluación del bloque

📝 Examen del Bloque 1

Dos partes: un test teórico autoevaluable (necesitas un mínimo de 70 % para superar el bloque) y un reto práctico de autocorrección con checklist.

Parte A · Test teórico (aprueba con 9/12)

1 · ¿Qué significan las siglas HTML?
2 · HTML es…
3 · ¿Qué indica <!DOCTYPE html>?
4 · ¿Dónde coloca el navegador lo que el usuario ve?
5 · El título de la pestaña del navegador se define con…
6 · ¿Cuántos <h1> se recomienda por página?
7 · Para marcar un texto con importancia real uso…
8 · Los pasos de una receta van mejor en…
9 · El atributo imprescindible de toda <img> para la accesibilidad es…
10 · Para abrir un enlace en pestaña nueva de forma segura…
11 · Desde paginas/contacto.html, ¿cómo llego a imagenes/logo.png?
12 · ¿Cuál es un comentario HTML válido?

Parte B · Reto práctico final

Construye el ejercicio 10 («sobre-mi.html») sin mirar la solución y valida tú mismo/a estos criterios. Mínimo para aprobar: 7 de 8 casillas.

Cumplidos: 0 / 8

🎉 ¿Superaste las dos partes? Enhorabuena: has aprobado el Bloque 1 de HTML. Ya sabes estructurar documentos web reales. El Bloque 2 te espera con la estructura semántica, formularios y multimedia.