¿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…).
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:
- DNS: el navegador pregunta a un «agenda telefónica» de internet qué dirección IP corresponde a ese dominio.
- Petición HTTP: tu navegador (el cliente) pide la página al servidor donde está alojada.
- Respuesta: el servidor envía de vuelta un archivo HTML (junto con CSS, JavaScript e imágenes).
- Renderizado: el navegador lee el HTML, construye el DOM, aplica los estilos y pinta la página en pantalla.
| Tecnología | Rol | Ejemplo |
|---|---|---|
| HTML | Estructura y significado (el esqueleto) | <h1>, <p>, <a> |
| CSS | Presentación y diseño (la piel) | colores, tamaños, posiciones |
| JavaScript | Comportamiento 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.
index.html. Los servidores buscan automáticamente ese nombre como puerta de entrada.Estructura de un documento HTML
Todo documento HTML respeta este esqueleto. Grábalo en la memoria: lo escribirás miles de veces.
<!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 | ¿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.
<p>Texto con <strong>negrita</p></strong>
<p>Texto con <strong>negrita</strong></p>
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.
<h1> por página, con el tema principal.3.2 · Párrafos y saltos
<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
| Etiqueta | Significado | Apariencia |
|---|---|---|
<strong> | Importancia real (avisos, advertencias) | negrita |
<b> | Solo visual, sin importancia añadida | negrita |
<em> | Énfasis al leer (cambia el sentido de la frase) | cursiva |
<i> | Términos técnicos, títulos, palabras extranjeras | cursiva |
<mark> | Texto resaltado | fondo amarillo |
<small> | Letra pequeña: notas legales | más pequeña |
<del> / <ins> | Eliminado / insertado (ediciones) | tachado / subrayado |
<sub> / <sup> | Subíndice / superíndice | H₂O · m² |
<strong>/<em>. Si solo quieres cambiar cómo se ve,
deja esa tarea para CSS.3.4 · Las tres familias de listas
<ul>
<li>Manzanas</li>
<li>Pan</li>
<li>Café</li>
</ul>
<ol>
<li>Precalienta el horno</li>
<li>Mezcla los ingredientes</li>
<li>Hornea 30 min</li>
</ol>
<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".
Enlaces, imágenes y rutas
4.1 · Enlaces: la «hyper» parte del hipertexto
<!-- 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>
target="_blank" añade siempre
rel="noopener": es una medida de seguridad y rendimiento obligatoria.4.2 · Imágenes
<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>
altes obligatorio: describe la imagen para personas ciegas y cuando el archivo falla. Si la imagen es decorativa:alt="".widthyheightreservan el espacio y evitan «saltos» al cargar.loading="lazy"retrasa la carga de imágenes fuera de pantalla.
| Formato | Ideal para… |
|---|---|
| JPG | Fotografías (millones de colores) |
| PNG | Transparencias, capturas, logos sencillos |
| SVG | Vectores: logos e iconos (escalan sin perder calidad) |
| WebP | Moderno: 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.html | logo.png | imagenes/logo.png |
index.html | vacaciones.jpg | imagenes/fotos/vacaciones.jpg |
sobre-mi.html | contacto.html | paginas/contacto.html |
paginas/contacto.html | logo.png | ../imagenes/logo.png |
| cualquiera | Google (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, nuncaMi Foto.JPG.
✍️ 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
- Falta
<head>con<meta charset="UTF-8">(y DOCTYPE debe ser exactamente<!DOCTYPE html>, en minúsculas). - El primer título debería ser
<h1>(jerarquía): abre h1 y cierra h1. - Anidación cruzada: debe cerrar
</strong>antes de</p>. - La imagen necesita el atributo
altdescriptivo. - 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.jpgdentro 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>
📝 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 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