🏠 Inicio ⟨⟩ HTML ✦ CSS ⚡ JavaScript
✦ CSS

Estilos y Diseño

CSS (Cascading Style Sheets) controla la apariencia visual de los elementos HTML: colores, fuentes, tamaños, disposición y mucho más.

Sintaxis básica

Una regla CSS se compone de un selector y un bloque de declaraciones (propiedad: valor).

/* Selector → a quién aplicar */
h1 {
  color: #ff7b54;
  font-size: 2rem;
  font-weight: bold;
}

/* Clase → .nombre-clase */
.tarjeta {
  background: white;
  border-radius: 8px;
  padding: 1rem;
  box-shadow: 0 4px 12px rgba(0,0,0,.1);
}

/* ID → #nombre-id (único por página) */
#hero {
  min-height: 100vh;
  display: flex;
}
CSS

Formas de vincular CSS

<!-- 1. Externo (recomendado) -->
<link rel="stylesheet" href="styles.css">

<!-- 2. Interno -->
<style>
  body { margin: 0; }
</style>

<!-- 3. En línea (evitar si es posible) -->
<p style="color: red;">Texto rojo</p>
HTML

Selectores y especificidad

Los selectores determinan a qué elementos se aplican los estilos. La especificidad decide cuál regla gana cuando hay conflicto.

SelectorEjemploEspecificidadDescripción
Universal*0Todos los elementos
Etiquetap, h11Por nombre de elemento
Clase.card10Por atributo class
ID#hero100Por atributo id
En líneastyle=""1000Directamente en el elemento
Descendientenav aSumaElemento dentro de otro
Pseudo-clasea:hover10Estado del elemento
/* Selectores avanzados */
nav a         { color: blue; }   /* descendiente */
nav > a       { color: red; }    /* hijo directo */
p + p         { margin-top: 0; } /* hermano adyacente */
a:hover       { opacity: .8; }   /* pseudo-clase */
li:first-child { font-weight: bold; }
input[type="text"] { border: 1px solid gray; }
CSS

Box Model (Modelo de Caja)

Todo elemento HTML es una caja rectangular compuesta por 4 capas:

📦

Content → Padding → Border → Margin

Content: el contenido real. Padding: espacio interior. Border: borde visible. Margin: espacio exterior con otros elementos.

.caja {
  /* Tamaño del contenido */
  width: 300px;
  height: 150px;

  /* Relleno interior (arriba | derecha | abajo | izquierda) */
  padding: 16px 24px;

  /* Borde */
  border: 2px solid #4ecdc4;
  border-radius: 8px;

  /* Margen exterior */
  margin: 1rem auto;

  /* Incluye padding y border en el width */
  box-sizing: border-box;
}
CSS

Colores en CSS

#ff7b54
#38d9f5
#f5d761
rgb()
hsl()
rgba()
grad
/* Formas de declarar colores */
color: red;                       /* nombre */
color: #ff0000;                   /* hex */
color: rgb(255, 0, 0);           /* rgb */
color: rgba(255, 0, 0, 0.5);    /* rgba (transparencia) */
color: hsl(0, 100%, 50%);       /* hsl */
background: linear-gradient(135deg, #ff7b54, #a78bfa);
CSS

Flexbox

Flexbox es el sistema de disposición más usado para alinear y distribuir elementos en una dimensión (fila o columna).

Vista previa: display:flex; gap:12px; justify-content:center;

Item 1
Item 2
Item 3
.contenedor {
  display: flex;
  flex-direction: row;          /* row | column */
  justify-content: center;     /* alineación eje principal */
  align-items: center;         /* alineación eje cruzado */
  flex-wrap: wrap;              /* envolver si no caben */
  gap: 1rem;                    /* espacio entre hijos */
}

.item {
  flex: 1;        /* crecer para ocupar espacio */
  flex-basis: 200px;
}
CSS

Tipografía

font-familyFuente del texto
font-sizeTamaño (px, rem, em, %)
font-weightGrosor (400, 700, bold)
line-heightAltura de línea
letter-spacingEspacio entre letras
text-alignAlineación del texto
text-decorationSubrayado, tachado, etc.
text-transformuppercase, lowercase, capitalize

Ejercicio Interactivo

Edita el HTML y CSS combinados. Presiona Ejecutar para ver el resultado:

🎨 Editor CSS en vivo

Ejercicio 2 — Flexbox Layout

🔲 Flexbox en acción

Tareas

01
Tarjeta de perfil

Estiliza una tarjeta con foto circular (border-radius: 50%), nombre, descripción y un botón. Usa colores de tu elección.

Fácil
02
Barra de navegación

Crea un navbar horizontal con logo a la izquierda y 4 links a la derecha usando Flexbox. Agrega hover effects.

Fácil
03
Grid de productos

Diseña una galería de 6 tarjetas de productos usando CSS Grid con 3 columnas, imagen, título y precio.

Medio
04
Variables CSS y temas

Crea un sistema de variables CSS (--primary-color, --bg, --text) y úsalas en toda la página. Luego crea una clase .dark que cambie los valores.

Medio
05
Página responsive

Construye una landing page que tenga 2 columnas en desktop y 1 columna en móvil usando media queries (@media max-width: 600px).

Difícil