ДизайнПользовательский интерфейс

Animatsioonide jõudlus

Auditeerib ja parandab animatsioonide jõudlusprobleeme: paigutuse ümberarvutused, kerimisega seotud liikumine, häguefektid.

JJulien Thibeaut (ibelick)·Дизайн·MIT

Навык из библиотеки — основная версия хранится в GitHub; ваши изменения сохраняются в вашей собственной копии.

Использовать этот навыкСкачать .zip
Как это работает?
  • ChatGPT открывает новый чат с загруженным навыком. Если он слишком длинный для ссылки, он копируется в буфер обмена — просто вставьте.
  • Claude работает так же. Чтобы установить навык навсегда, скачайте .zip и загрузите его в Claude → Settings → Capabilities → Skills (Pro/Team/Enterprise).
  • Копировать навык копирует навык, чтобы его можно было вставить в любой ассистент, включая Grok.

fixing-motion-performance

Paranda animatsioonijõudluse probleeme.

kuidas kasutada

Ära migreeri animatsiooniteeke, kui seda ei ole selgelt küsitud. Rakenda reegleid olemasolevas stack’is.

millal rakendada

Viita nendele juhistele, kui: - lisad või muudad UI-animatsioone (CSS, WAAPI, Motion, rAF, GSAP) - refaktoreerid tõrkuvat interaktsiooni või üleminekut - rakendad kerimisega seotud liikumist või reveal-on-scroll’i - animeerid paigutust, filtreid, maske, gradiente või CSS-muutujaid - vaatad üle komponente, mis kasutavad will-change’i, transforme või mõõtmist

renderdamissammude sõnastik

reeglikategooriad prioriteedi järgi

prioriteet kategooria mõju
1 never patterns kriitiline
2 choose the mechanism kriitiline
3 measurement kõrge
4 scroll kõrge
5 paint keskmine-kõrge
6 layers keskmine
7 blur and filters keskmine
8 view transitions madal
9 tool boundaries kriitiline

kiirviide

1. never patterns (kriitiline)

2. choose the mechanism (kriitiline)

3. measurement (kõrge)

4. scroll (kõrge)

5. paint (keskmine-kõrge)

6. layers (keskmine)

7. blur and filters (keskmine)

8. view transitions (madal)

9. tool boundaries (kriitiline)

levinud parandused

/* layout thrashing: animate transform instead of width */
/* before */ .panel { transition: width 0.3s; }
/* after */  .panel { transition: transform 0.3s; }

/* scroll-linked: use scroll-timeline instead of JS */
/* before */ window.addEventListener('scroll', () => el.style.opacity = scrollY / 500)
/* after */  .reveal { animation: fade-in linear; animation-timeline: view(); }
// measurement: batch reads before writes (FLIP)
// before — layout thrash
el.style.left = el.getBoundingClientRect().left + 10 + 'px';
// after — measure once, animate via transform
const first = el.getBoundingClientRect();
el.classList.add('moved');
const last = el.getBoundingClientRect();
el.style.transform = `translateX(${first.left - last.left}px)`;
requestAnimationFrame(() => { el.style.transition = 'transform 0.3s'; el.style.transform = ''; });

ülevaatuse juhised