▶ 1. Selectores
elemento
Selecciona todas las etiquetas de ese tipo. Ej:
p { } afecta todos los párrafos.
.clase clave
Selecciona todos los elementos con esa clase CSS.
El más usado en proyectos reales.
#id
Selecciona el elemento con ese ID único. Alta
especificidad, usar poco.
*
Selector universal. Selecciona todos los
elementos. Usado en resets (* { box-sizing: border-box }).
A, B
Agrupa selectores. Aplica el mismo estilo a
A y B.
A B
Descendiente: cualquier B que esté dentro de A (a
cualquier profundidad).
A > B
Hijo directo: solo el B que es hijo inmediato de
A.
:hover clave
Pseudo-clase: se activa al pasar el mouse por
encima del elemento.
:focus
Pseudo-clase: al elemento que tiene el
foco (inputs al ser clicados).
:nth-child(n)
Pseudo-clase: el enésimo hijo. Ej:
:nth-child(2n) = pares.
::before / ::after
Pseudo-elementos: inserta contenido
antes / después del elemento. Requiere
content: "".
▶ 2. Box Model
width / height
Ancho y alto del área de contenido. Valores: px,
%, rem, vw, auto.
padding clave
Espacio interno entre el contenido y el borde.
padding: top right bottom left.
margin clave
Espacio externo fuera del borde.
margin: auto centra horizontalmente.
border
Borde del elemento. Shorthand:
border: 1px solid #ccc (grosor, estilo, color).
box-sizing: border-box
clave
Incluye padding y border dentro del width.
Recomendado para todo proyecto.
border-radius
Esquinas redondeadas. Con
50% crea un círculo perfecto.
overflow
Qué pasa cuando el contenido desborda. Valores:
hidden, scroll,
auto, visible.
box-shadow
Sombra del elemento. Ej:
box-shadow: 0 4px 12px rgba(0,0,0,0.2).
outline
Contorno exterior al borde (no ocupa espacio). Común en
:focus. outline: none para
quitarlo.
▶ 3. Tipografía
font-family clave
Fuente tipográfica. Siempre terminar con una fuente
genérica: sans-serif, serif, monospace.
font-size
Tamaño de fuente. Preferir rem (relativo al root)
sobre px para accesibilidad.
font-weight
Grosor de la fuente: 100–900 o normal (400),
bold (700).
font-style
Estilo: normal, italic, oblique.
line-height
Altura de línea (interlineado). Valor
recomendado: 1.5 – 1.7 para
texto de lectura.
color clave
Color del texto. Acepta: nombre, #hex, rgb(),
rgba(), hsl().
text-align
Alineación del texto: left,
center, right,
justify.
text-decoration
Decoración: underline (subrayado),
line-through (tachado), none.
text-transform
Transformación: uppercase,
lowercase, capitalize.
letter-spacing
Espaciado entre letras. Útil para títulos en
mayúsculas.
text-overflow: ellipsis
Trunca el texto con "...". Requiere también
white-space: nowrap y
overflow: hidden.
▶ 4. Colores y Fondos
background-color clave
Color de fondo del elemento. Acepta cualquier
valor de color CSS.
background-image
Imagen de fondo. Ej: url('foto.jpg') o un
gradiente.
background-size
cover: llena el área (puede recortar).
contain: entra completo (puede dejar espacio).
background-position
Posición de la imagen. Ej: center,
top left, 50% 20%.
background-repeat
Repetición. Usar no-repeat para imágenes que no
deben repetirse.
opacity
Transparencia del elemento completo. De 0
(invisible) a 1 (opaco). Afecta hijos también.
rgba(r, g, b, a)
Color con canal alfa (transparencia) solo del
fondo, sin afectar al texto hijo.
linear-gradient()
Gradiente lineal. Ej:
linear-gradient(to right, #667eea, #764ba2).
--variable: valor nuevo
Declara una variable CSS (custom property). Usar
en :root { } para acceso global.
var(--variable) nuevo
Usa una variable CSS. Ej:
color: var(--color-primario).
▶ 5. Flexbox (en el contenedor)
display: flex clave
Activa Flexbox. Los hijos directos se convierten
en flex-items.
flex-direction
Dirección del eje principal: row (horizontal,
default) / column (vertical).
justify-content clave
Alinea en el eje principal: flex-start, flex-end,
center, space-between,
space-around, space-evenly.
align-items clave
Alinea en el eje secundario: flex-start,
flex-end, center, stretch, baseline.
flex-wrap
wrap: los items se envuelven a la siguiente línea
cuando no caben. nowrap: fuerza una sola línea.
gap clave
Espacio entre items flex. Más fácil que usar
margin. Ej: gap: 16px.
flex-grow
Cuánto puede crecer un item para llenar el
espacio disponible. flex-grow: 1 = ocupa todo lo
que puede.
flex: 1
Shorthand:
flex-grow: 1, flex-shrink: 1, flex-basis: 0. El
item ocupa el espacio disponible.
align-self
Alineación individual de un item. Anula el
align-items del contenedor.
order
Cambia el orden visual de un item sin cambiar el
HTML. Default: 0.
▶ 6. CSS Grid (en el contenedor)
display: grid clave
Activa Grid. Los hijos directos se convierten en
grid-items.
grid-template-columns
clave
Define las columnas. Ej:
repeat(3, 1fr) = 3 columnas iguales.
200px 1fr = fija + flexible.
grid-template-rows
Define las filas. Mismo formato que columns.
gap
Espacio entre celdas. row-gap y
column-gap para controlar por separado.
grid-column: 1 / 3
El item ocupa desde la línea 1 hasta la 3 (2 columnas). También: span 2.
grid-row: 1 / 3
El item ocupa desde la línea 1 hasta la 3 (2 filas).
place-items: center
Shorthand de align-items + justify-items. Centra
todo el contenido.
fr clave
Unidad fracción. 1fr = toma la
fracción igual del espacio disponible.
minmax(200px, 1fr)
Columna con mínimo 200px y máximo flexible. Útil
para layouts responsive sin media queries.
auto-fill / auto-fit
Con repeat(): auto-fill llena con columnas
vacías, auto-fit colapsa las vacías.
▶ 7. Posicionamiento
position: static
Por defecto. Flujo normal del documento.
top/left/etc no tienen efecto.
position: relative
clave
Relativo a su posición normal. top/left/etc
desplazan desde ahí. Crea contexto para absolute.
position: absolute
clave
Relativo al padre posicionado más cercano (el que
tiene position != static). Sale del flujo.
position: fixed
Fijo en la ventana. No se mueve al hacer scroll.
Ideal para navbars y modales.
position: sticky
Flujo normal hasta cierto punto, luego se
queda fijo. Ej: top: 0 se pega
arriba al scrollear.
top / right / bottom / left
Desplazan el elemento desde cada lado. Solo funcionan si
position no es static.
z-index
Orden de apilamiento. Mayor número = encima. Solo
funciona en elementos posicionados.
▶ 8. Display y Unidades
display: block
Ocupa todo el ancho disponible. Genera salto de
línea antes y después.
display: inline
Solo ocupa su propio tamaño. No acepta width ni
height.
display: inline-block
Híbrido: fluye en línea pero acepta
width, height, padding y margin.
display: none
Oculta el elemento y no ocupa espacio en el
layout.
visibility: hidden
Oculta visualmente pero sí ocupa espacio en el
layout.
px
Píxeles fijos. Independiente del tamaño de fuente del usuario.
rem clave
Relativo al font-size del :root (16px por
defecto). Recomendado para fuentes y espaciado.
em
Relativo al font-size del elemento padre. Se
acumula al anidar.
%
Porcentaje del elemento padre. Muy usado para
width y height responsive.
vw / vh
% del ancho / alto del viewport.
100vh = pantalla completa.
▶ 9. Transiciones y Transformaciones
transition clave
Anima el cambio suave de una propiedad. Ej:
transition: background-color 0.3s ease.
transition: all 0.2s
Anima todas las propiedades que cambien. Más
fácil pero menos performante.
ease / linear / ease-in-out
Curva de la transición. ease: arranca lento y
frena. linear: velocidad constante.
transform: translateX()
Mueve el elemento horizontalmente sin afectar el
layout. También translateY() y
translate(x, y).
transform: scale()
Escala el elemento. scale(1.1) =
10% más grande. scale(0.9) = 10% más pequeño.
transform: rotate()
Rota el elemento. Ej:
rotate(45deg). Acepta deg, rad, turn.
@keyframes
Define una animación. Ej:
@keyframes fadeIn { from { opacity: 0 } to { opacity: 1 }
}.
animation
Aplica la animación. Ej:
animation: fadeIn 0.5s ease forwards.
cursor: pointer
Muestra el cursor de mano al pasar por el
elemento. Siempre en botones custom.