Cada paso acumula lo anterior. Lee la explicación, observa el
resultado y prueba una modificación. El laboratorio adapta los
archivos separados a un marco aislado.
Qué añadimos
Dónde va y en qué orden
Qué deberías ver
Consola y comportamiento
Ver código usado en la variante
El navegador normaliza el HTML al analizarlo. La vista previa
incrusta CSS y JavaScript; en tus archivos mantendrás sus
enlaces externos.
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<meta name="description" content="Mi primera página de estudio: estructura, textos, enlaces y ejemplos de HTML.">
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<meta name="description" content="Mi primera página de estudio: estructura, textos, enlaces y ejemplos de HTML.">
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<meta name="description" content="Mi primera página de estudio: estructura, textos, enlaces y ejemplos de HTML.">
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<meta name="description" content="Mi primera página de estudio: estructura, textos, enlaces y ejemplos de HTML.">
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<meta name="description" content="Mi primera página de estudio: estructura, textos, enlaces y ejemplos de HTML.">
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<meta name="description" content="Mi primera página de estudio: estructura, textos, enlaces y ejemplos de HTML.">
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<meta name="description" content="Mi primera página de estudio: estructura, textos, enlaces y ejemplos de HTML.">
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<meta name="description" content="Mi primera página de estudio: estructura, textos, enlaces y ejemplos de HTML.">
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<meta name="description" content="Mi primera página de estudio: estructura, textos, enlaces y ejemplos de HTML.">
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
<!doctype html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Mi primera página</title>
<meta name="description" content="Mi primera página de estudio: estructura, textos, enlaces y ejemplos de HTML.">
<link rel="stylesheet" href="assets/style.css">
</head>
<body>
<header>
<h1>Mi diario de aprendizaje</h1>
<p>Estoy aprendiendo a construir una página con sentido.</p>
</header>
<nav aria-label="Principal">
<a href="#temas">Temas</a>
<a href="#contacto">Contacto</a>
</nav>
<main>
<section id="temas">
<h2>Lo que quiero aprender</h2>
<p>Primero estructura, después estilo y finalmente interacción.</p>
<ol>
<li>HTML: contenido</li>
<li>CSS: presentación</li>
<li>JavaScript: interacción</li>
</ol>
<figure>
<img src="assets/tutorial-grid.svg" alt="Diagrama con tres áreas iguales" width="360" height="120">
<figcaption>Tres áreas que se pueden distribuir.</figcaption>
</figure>
<article class="lesson-card">
<h3>Mi primera ficha</h3>
<p>Una idea que puedo consultar de forma independiente.</p>
</article>
<table>
<caption>Qué aporta cada lenguaje</caption>
<thead><tr><th scope="col">Lenguaje</th><th scope="col">Función</th></tr></thead>
<tbody><tr><td>HTML</td><td>Estructura</td></tr><tr><td>CSS</td><td>Presentación</td></tr></tbody>
</table>
</section>
<section id="practica">
<h2>Mi práctica</h2>
<form>
<label for="nombre">Nombre</label>
<input id="nombre" name="nombre" required>
<button type="submit">Comprobar</button>
</form>
<details>
<summary>Ver una pista</summary>
<p>Empieza por la estructura; después añade estilos.</p>
</details>
</section>
</main>
<footer id="contacto">
<p>Un proyecto para practicar cada día.</p>
</footer>
</body>
</html>
.tarjeta selecciona los elementos;
padding nombra la propiedad; 24px es el
valor. Cada declaración termina con punto y coma.
Cómo se conecta con HTML
<link rel="stylesheet" href="assets/style.css">
El navegador construye el DOM del HTML y aplica las reglas CSS
para calcular presentación y distribución. No todas las
propiedades se heredan.
La cascada decide qué gana
Origen, importancia y capas de la cascada.
Especificidad del selector entre reglas relevantes.
El orden de aparición, si los criterios anteriores empatan.
Una clase pesa más que una etiqueta; un ID pesa más que una clase.
:where() no aporta especificidad. La cercanía del
selector en el archivo no importa si otro criterio decide primero.
El modelo de caja
Contenido, padding, borde y margin. Con
box-sizing: border-box, las dimensiones declaradas
incluyen padding y borde, pero no margin.
DE ESTILOS A SISTEMAS DE DISEÑO
La presentación encontró su propio lenguaje.
1994
Una propuesta de hojas de estilo
Håkon Wium Lie propuso separar los estilos del contenido; Bert Bos
contribuyó a desarrollar CSS.
1996
CSS1
W3C publicó una recomendación con reglas para tipografía, colores
y espaciado.
1998
CSS2
Se ampliaron posicionamiento, medios y capacidades de
presentación.
Hoy
Módulos que evolucionan
CSS se desarrolla por módulos: Grid, Flexbox, consultas de
contenedor y otras capacidades avanzan con sus propias
especificaciones. No existe una única versión CSS3 que lo englobe
todo.
LABORATORIO GUIADO
Mueve el control. Mira la caja.
Una caja, muchas posibilidades.
El padding aumenta el espacio interior. El borde mantiene un
límite visible.
123456
CONSULTA CUANDO LO NECESITES
Tu referencia de CSS
Selectores, propiedades, valores y reglas principales. CSS contiene
muchas más propiedades; la referencia enlazada sirve para consultar
su sintaxis y compatibilidad completa.
.claseSelectores
Selecciona elementos con una clase compartida.
Cuándo usarlo
Para estilos reutilizables.
Cuándo evitarlo
No uses nombres ligados al color si su propósito puede
cambiar.