DisainKasutajaliides

Animatsioonide jõudlus

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

JJulien Thibeaut (ibelick)·Disain·MIT

Kogu oskus — vaikeversiooni hoitakse GitHubis; sinu muudatused jäävad sinu enda klooni.

Kasuta seda oskustLaadi alla .zip
Kuidas see töötab?
  • ChatGPT avab uue vestluse, kuhu oskus on laaditud. Kui see on lingi jaoks liiga pikk, kopeeritakse see lõikelauale — lihtsalt kleebi.
  • Claude töötab samamoodi. Püsivaks paigaldamiseks laadi alla .zip ja lae see üles: Claude → Settings → Capabilities → Skills (Pro/Team/Enterprise).
  • Kopeeri oskus kopeerib oskuse, et saaksid selle kleepida mis tahes assistenti, sh 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