Saltar al contenido
Curso de HTML
Todos los cursos Ir al ejercicio →

Introducción a CSS

  • ⏱ 45 minutos
  • 📶 Nivel: principiante
  • 🧩 Incluye ejercicio

💡 🎯 Al terminar esta lección podrás…

  • Escribir reglas CSS con selector, propiedad y valor.
  • Enlazar un archivo de estilos a tus páginas.
  • Aplicar color, tipografía, espacios y bordes con el modelo de caja.
  • Acomodar elementos con flexbox y adaptar el diseño a pantallas pequeñas.

1.Qué es CSS

CSS (Cascading Style Sheets, «hojas de estilo en cascada») es el lenguaje que define cómo se ve el HTML: colores, tipografía, tamaños, espacios y posición. HTML dice qué es cada cosa; CSS dice cómo luce.

Una regla de CSS se compone de un selector (a qué elementos se aplica) y un bloque de declaraciones (qué cambios se hacen):

✏️ Tu primera regla CSS

💡 Consejo · Prueba valores

Cambia #4f46e5 por crimson, teal o #ff8800. Los colores pueden escribirse con nombres (red), con código hexadecimal (#ff0000) o con rgb(255, 0, 0).

2.Dónde se escribe el CSS

FormaCómo se veCuándo usarla
Archivo externo<link rel="stylesheet" href="estilos.css">La recomendada. Un archivo sirve a todas las páginas
Etiqueta <style><style> h1 { color: red; } </style>Pruebas rápidas o una sola página
En línea<p style="color: red;">Casos puntuales; evítala por norma
Enlazar un archivo CSS (en el head)
<head>
  <meta charset="UTF-8" />
  <title>Mi página</title>
  <link rel="stylesheet" href="estilos.css" />
</head>

📌 Nota · El mismo principio que src y href

La ruta de href funciona igual que en los enlaces: si estilos.css está en una carpeta css/, escribirías href="css/estilos.css". Este curso hace justamente eso con assets/estilos.css.

⚠️ Importante · Cascada y orden

Si dos reglas cambian lo mismo, gana la más específica y, si empatan, la que aparece después. De ahí lo de «en cascada». Por eso las reglas generales van arriba y las particulares abajo.

3.Selectores

Los selectores deciden a qué elementos afecta una regla. Estos son los cuatro que usarás el 90% del tiempo:

SelectorEligeEjemplo
ElementoTodas las etiquetas de ese tipop { … }
ClaseLos elementos con class="aviso".aviso { … }
IdentificadorEl elemento con id="portada"#portada { … }
DescendienteEtiquetas dentro de otrasnav a { … }
✏️ Clases e identificadores

💡 Consejo · Nombres de clase con sentido

Nombra por el papel que cumple, no por su aspecto: .aviso es mejor que .caja-amarilla, porque si mañana el aviso se vuelve rojo el nombre sigue teniendo sentido.

4.Color y texto

PropiedadQué controlaEjemplo
colorColor del textocolor: #1e2235;
background-colorColor de fondobackground-color: #f7f8fc;
font-familyTipo de letrafont-family: Georgia, serif;
font-sizeTamañofont-size: 1.1rem;
font-weightGrosor (negrita)font-weight: 700;
line-heightEspacio entre líneasline-height: 1.7;
text-alignAlineacióntext-align: center;
text-decorationSubrayadotext-decoration: none;
✏️ Estilo de texto

📌 Nota · Unidades

Tienes dos familias: absolutas (px, píxeles) y relativas (rem, em, %). Las relativas se adaptan a las preferencias de la persona (por ejemplo, si agranda su letra), por eso son mejores para texto. 1rem equivale al tamaño base del navegador, normalmente 16 px.

🔍 Ejemplo · Pila de tipografías

font-family: "Segoe UI", Arial, sans-serif; es una pila: el navegador usa la primera disponible y, si no la tiene, pasa a la siguiente. Termina siempre con una familia genérica (serif, sans-serif, monospace).

5.El modelo de caja

En CSS, todo elemento es una caja rectangular, formada por cuatro capas, de adentro hacia afuera:

margin (margen)
border (borde)
padding (relleno)
contenido
CapaQué esPropiedad
ContenidoEl texto o imagenwidth, height
RellenoEspacio dentro de la caja, entre el contenido y el bordepadding
BordeLa línea que rodea la cajaborder
MargenEspacio fuera de la caja, que la separa de las vecinasmargin
✏️ Juega con la caja
Atajos de padding y margin
.caja { padding: 10px; }               /* los cuatro lados */
.caja { padding: 10px 20px; }          /* arriba-abajo | izquierda-derecha */
.caja { padding: 10px 20px 5px 0; }    /* arriba, derecha, abajo, izquierda */
.caja { margin: 0 auto; }              /* centra horizontalmente un bloque con ancho */

💡 Consejo · Un truco que ahorra dolores de cabeza

Añade al inicio de tu CSS * { box-sizing: border-box; }. Así el padding y el border quedan dentro del width declarado, en vez de sumarse. Todo cuadra mejor.

6.Colocar elementos: flexbox

Flexbox es la herramienta moderna para acomodar elementos en fila o columna. Se activa en el contenedor con display: flex y reparte a sus hijos.

Propiedad (en el contenedor)Qué hace
display: flexActiva flexbox; los hijos se colocan en una fila
flex-directionrow (fila) o column (columna)
gapEspacio entre los hijos
justify-contentAlinea en el eje principal: flex-start, center, space-between…
align-itemsAlinea en el eje transversal: center, stretch…
flex-wrap: wrapPermite que los hijos pasen a otra línea si no caben
✏️ Tu primera barra de navegación

Recuerdas el menú de la lección 6, una lista dentro de un <nav>? Con cuatro propiedades pasó de lista vertical a barra horizontal. Prueba cambiar justify-content a space-between o flex-direction a column.

🔍 Ejemplo · Tarjetas que se acomodan solas

Con display: flex; flex-wrap: wrap; gap: 16px; en el contenedor, y flex: 1 1 200px; en cada tarjeta, obtienes una cuadrícula que pasa de 3 columnas a 1 en el celular, sin escribir nada más.

7.Estados y transiciones

CSS no solo da forma: también reacciona a lo que hace la persona. Las pseudoclases aplican estilos en ciertos estados:

Con transition el cambio se vuelve suave en lugar de brusco:

✏️ Un botón con animación

⚠️ Importante · No quites el foco

Nunca escribas outline: none sin poner algo equivalente. Quien navega con teclado necesita ver dónde está. :focus-visible muestra el contorno solo cuando hace falta.

📌 Nota · Respeta a quien no quiere animaciones

Algunas personas se marean con el movimiento. El bloque @media (prefers-reduced-motion: reduce) { … } permite desactivarlo. Este curso lo hace con todas sus animaciones.

8.Diseño adaptable

Tu página se verá en pantallas de todo tamaño. Una media query aplica estilos solo si se cumple una condición:

Media query
.tarjetas { display: flex; gap: 16px; }

@media (max-width: 600px) {
  .tarjetas { flex-direction: column; }
}

Lee: «si la pantalla mide 600 px o menos, apila las tarjetas en columna». Recuerda que para que funcione en celulares necesitas la línea <meta name="viewport" content="width=device-width, initial-scale=1.0"> en el <head>, que ya incluyes desde la lección 1.

💡 Consejo · Diseña primero para el celular

Escribe los estilos base pensando en una pantalla pequeña y usa min-width en las media queries para añadir mejoras en pantallas grandes. Es más sencillo que quitar cosas después.

9.Variables y orden

Las variables CSS guardan un valor para reutilizarlo. Si cambias la variable, cambia todo el sitio:

Variables en :root
:root {
  --color-principal: #4f46e5;
  --radio: 12px;
}

.boton {
  background: var(--color-principal);
  border-radius: var(--radio);
}

Así está hecho el tema claro y oscuro de este curso: al activar el modo oscuro solo cambian los valores de las variables; el resto del CSS no se toca.

Un orden recomendado para tu CSS

  1. Variables y reglas globales (:root, * { box-sizing }, body).
  2. Elementos generales: h1, p, a, img.
  3. Componentes con clase: .tarjeta, .boton, .menu.
  4. Media queries al final.

10.Errores frecuentes

📒 Apuntes para llevar

  • CSS define el aspecto; HTML define el contenido y la estructura.
  • Una regla es selector { propiedad: valor; }.
  • Lo ideal es un archivo .css enlazado con <link rel="stylesheet" href="…"> en el <head>.
  • Selectores principales: elemento (p), clase (.aviso), id (#portada) y descendiente (nav a).
  • Todo elemento es una caja: contenido, padding, border y margin. Usa box-sizing: border-box.
  • display: flex, gap, justify-content y align-items acomodan elementos en fila o columna.
  • :hover, :focus-visible y transition dan interactividad; respeta prefers-reduced-motion.
  • Las media queries adaptan el diseño al tamaño de pantalla y las variables CSS reutilizan valores.

11.Glosario

TérminoSignificado
SelectorParte de una regla que indica a qué elementos se aplica.
PropiedadCaracterística que se modifica (color, margin…).
DeclaraciónPareja propiedad: valor;.
ClaseNombre reutilizable que se asigna con class y se selecciona con ..
Modelo de cajaIdea de que todo elemento tiene contenido, relleno, borde y margen.
FlexboxSistema para acomodar elementos en una dimensión (fila o columna).
Media queryCondición que activa estilos solo en ciertas pantallas.
PseudoclaseEstado de un elemento (:hover, :focus…).

🧠 Comprueba lo aprendido

Elige una respuesta en cada pregunta. Verás al instante si acertaste y por qué.

¿Qué parte de h1 { color: red; } es el selector?

¿Cuál es la forma recomendada de aplicar CSS a varias páginas?

En el modelo de caja, ¿qué crea espacio dentro de la caja, entre el contenido y el borde?

¿Cómo conviertes una lista de enlaces en una barra horizontal?

¿Qué selector elige elementos con class="aviso"?

Tu progreso se guarda en este navegador y se refleja en el índice del curso.

💡 🚀 ¡Ahora te toca!

La práctica fija lo aprendido. Pasa al ejercicio de esta lección.

Ir al ejercicio