EnsayoCSS1 min restantes
EnsayoCSS1 min de lectura

Rendimiento de scroll

Cómo arreglar interfaces con scroll trabado y el modelo mental que sigo usando para mantener fluidez.

Natan SantoloPor Natan SantoloLíder de Diseño en libertad

Cuando una interfaz se siente pesada al hacer scroll, la gente no dice “hay un problema de renderizado”. Dice: “esto se siente mal”.

Me pasó varias veces en barras fijas y elementos animados: se veían bien en captura estática, pero en interacción real daban tirones.

El problema de fondo

La mayoría de los problemas de scroll aparecen por tres causas:

  • recálculo de layout en cada evento de scroll
  • paints caros (sombras grandes, filtros, efectos)
  • JavaScript haciendo demasiado trabajo por frame

A 60fps tienes unos 16ms por frame. Si pasas ese presupuesto, aparecen saltos.

El principio que más me ayudó

Anima transform y opacity siempre que puedas.

Evita animar top/left/width/height para actualizaciones atadas al scroll.

.floating-toolbar {
  position: sticky;
  top: 0;
  transform: translateZ(0);
  will-change: transform;
}

.floating-toolbar.is-condensed {
  transform: translateY(-4px) scale(0.98);
  opacity: 0.97;
}

will-change ayuda en escenarios puntuales, pero no conviene abusarlo: puede subir consumo de memoria.

Patrón seguro para listeners de scroll

let ticking = false;

window.addEventListener('scroll', () => {
  if (ticking) return;
  ticking = true;

  requestAnimationFrame(() => {
    const y = window.scrollY;
    document.body.classList.toggle('is-scrolled', y > 24);
    ticking = false;
  });
}, { passive: true });

Con esto evitas meter trabajo síncrono pesado en un evento de alta frecuencia.

Checklist práctico

  • usa listeners passive cuando sea posible
  • audita estilos costosos en elementos sticky/fixed
  • prueba en dispositivos medios, no solo en tu laptop
  • perfila en DevTools y vigila long tasks

La fluidez no depende de hacks. Depende de respetar el presupuesto de cada frame.

La diferencia en percepción es enorme: un producto fluido transmite calidad antes de que alguien lea una sola palabra.

Referencia que me ayudó originalmente a ordenar estas ideas: Four Kitchens sobre will-change.