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.51.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.