🗺️ Descripción general — backgrounds como contexto emocional
Un fondo animado no compite con el contenido — lo define el ambiente. Starfield dice "tecnología y escala". Bokeh dice "elegancia y profundidad". Noise-grain dice "cine y textura". La elección correcta, invisible, amplía el mensaje; la equivocada distrae.
🎯 Criterios de selección
- •Tono del video: institucional →
geometric-patternsogrid-pulse; emocional →bokeh-circlesogradient-shift. - •Complejidad visual del contenido: mucho texto → usa fondos sutiles (noise-grain, gradient-shift); poco texto → puedes usar matrix-rain o starfield.
- •Costo de renderizado: starfield (80 elementos) y matrix-rain pesan más que gradient-shift (CSS puro). Considéralo en renders de larga duración.
💡 Consejo de composición
Reduce la opacidad del background a 0.3–0.6 cuando haya contenido encima. Usa position: absolute; inset: 0; opacity: 0.4 en el contenedor del background y el contenido principal en un z-index superior. Esto mantiene el ambiente sin dificultar la lectura.
🫧 bokeh-circles — círculos suaves a la deriva
O bokeh-circles genera círculos semitransparentes de varios tamaños que flotan lentamente por la pantalla. Cada círculo tiene una posición, una velocidad y un tamaño determinísticos, basados en el índice como semilla, lo que crea un movimiento orgánico sin Math.random().
const t = frame / fps; // posição inicial baseada no índice (sem Math.random) const baseX = ((i * 137.508) % 100); const baseY = ((i * 97.3) % 100); // deriva suave com ondas periódicas const x = baseX + Math.sin(t * speed + i) * driftAmp; const y = baseY + Math.cos(t * speed + i) * driftAmp;
💡 ¿Por qué 137.508?
Ese es el ángulo áureo en grados (φ ≈ 137,5°). Multiplicar el índice por este valor distribuye los puntos de forma casi uniforme, sin agrupamientos, y genera la apariencia natural de «dispersión equilibrada» característica de la plantilla.
✓ Qué HACER
- ✓Ajusta la opacidad de los círculos entre 0.05 y 0.2 para lograr un fondo sutil.
- ✓Usar blur vía CSS
filter: blur()para el efecto bokeh real. - ✓Variar el radio entre 20px y 120px para dar profundidad visual.
✗ Qué NO hacer
- ✗Usar Math.random() sin seed: los círculos «parpadean» en cada render.
- ✗Usar más de 30 círculos sin reducir el blur — el render se vuelve pesado.
- ✗Alta opacidad con textos: los círculos compiten con la lectura.
🌈 gradient-shift — gradiente ambiental rotativo
O gradient-shift es la plantilla de background más ligera de la biblioteca. Usa solo un linear-gradient con ángulo y colores que evolucionan mediante ondas sinusoidales basadas en frame / fps. Cero elementos en el DOM, aparte de un único <div>.
const t = frame / fps; // fases defasadas para transição suave de cores const phase1 = Math.sin(t * 0.3) * 0.5 + 0.5; const phase2 = Math.sin(t * 0.3 + 2) * 0.5 + 0.5; // rotação lenta do ângulo const angle = (frame * 0.5) % 360; // render: linear-gradient(${angle}deg, ${color1}, ${color2}, ${color3})
Velocidad del ciclo de colores
El multiplicador 0.3 en sin(t * 0.3) controla la frecuencia del cambio de color. Valores más bajos = ciclo más lento; más altos = pulsación rápida. Para la mayoría de los fondos, 0.15–0.4 es lo ideal.
Paleta de colores
La plantilla usa una paleta de 4 colores basados en azules profundos. Cambia el array colors para adaptarlo a tu tono. Mantén colores cercanos en matiz para evitar transiciones bruscas.
Velocidad de rotación del ángulo
frame * 0.5 hace que el gradiente gire 180° en 360 frames (12s a 30fps). Reduce a frame * 0.2 para una rotación casi imperceptible — ideal para presentaciones largas.
💻 matrix-rain — columnas de código que caen
O matrix-rain es el background más temático de la biblioteca: caracteres verdes que caen en columnas y evocan el aspecto icónico de la película Matrix. Cada columna tiene velocidad y posición determinísticas, y el color puede adaptarse a cualquier paleta.
🖥️ Mecánica de las columnas
Cada columna es un array de caracteres. La posición Y de cada char se calcula según el frame para crear el efecto de «estela que cae». El char más reciente brilla más; los más antiguos se van desvaneciendo.
// posição y de cada caractere na coluna k const speed = 1 + (k * 7 % 3); // 1, 2 ou 3 (determinístico) const headY = (frame * speed * charH) % (height + trailLength); const charOpacity = interpolate(j, [0, trailLength], [0.9, 0]);
✓ Qué HACER
- ✓Cambia el color de las columnas a azul o cian para una marca diferente.
- ✓Reduce la opacidad general para usarlo como fondo de overlays.
- ✓Variar los caracteres: usa dígitos hexadecimales para un tema «hack».
✗ Qué NO hacer
- ✗Usar como fondo de presentaciones serias/corporativas: contexto equivocado.
- ✗Aumentar el número de columnas por encima de 40 sin medir los FPS del render.
- ✗Mezclar con texto verde — mismo matiz, no destaca.
🌠 starfield — vuelo por el espacio
O starfield simula el efecto de viajar por el hiperespacio: las estrellas brotan en el centro y se expanden hacia los bordes a medida que avanza el frame. El tamaño y la opacidad de cada estrella aumentan con el progreso radial, creando una sensación de velocidad y perspectiva.
💡 La ilusión de perspectiva
Cada estrella comienza diminuta en el centro y crece mientras se aleja. size = baseSize * (1 + progress * 2) garantiza que cuanto más lejos, más grande. Esto simula el efecto de "punto de fuga" de la perspectiva 3D usando solo matemáticas 2D.
// ângulo determinístico por índice (ângulo áureo) const seedAngle = ((i * 137.508) % 360) * (Math.PI / 180); const cycleLength = fps * 5; const progress = ((frame * speed + i * 15) % cycleLength) / cycleLength; const radius = seedRadius * 20 + progress * maxRadius; const x = cx + Math.cos(seedAngle) * radius; const y = cy + Math.sin(seedAngle) * radius;
🎨 geometric-patterns vs. grid-pulse — cuándo usar cada uno
Ambas plantillas usan formas geométricas repetitivas, pero con intenciones diferentes. El geometric-patterns presenta formas grandes en rotación — recursos visuales sofisticados para intros. El grid-pulse usa una cuadrícula de puntos con ondas de ripple — atmósfera de "sistema activo" o "mapa de calor".
geometric-patterns
- ✓Formas que giran y escalan — polígonos, hexágonos, rombos.
- ✓Ideal para intros de marca e identidad visual sólida.
- ✓Hook:
interpolate(frame, [0,dur], [0, 360])para una rotación continua.
grid-pulse
- ✓Cuadrícula de puntos donde una onda ripple se expande desde el centro.
- ✓Ideal para dashboards, datos en tiempo real y contextos técnicos.
- ✓Hook:
distância_do_ponto_ao_centro - frame * velocidadepara la onda.
💡 Regla de oro
Si el contenido principal tiene ángulos rectos y texto alineado → usa grid-pulse (fuerzas paralelas, refuerza la estructura). Si el contenido es fluido y orgánico → usa geometric-patterns (contraste complementario).
📚 Biblioteca completa — las 9 plantillas
Referencia rápida de todas las plantillas de background. Úsala como referencia cuando necesites elegir rápidamente.
📌 Resumen del módulo
frame % ciclo para un bucle infinito de estrellas.Próximo módulo:
2.6 — Cinemático: nueve plantillas que imitan técnicas de cámara y posproducción cinematográfica.