ব্রাউজার CSS পরিবর্তনগুলিকে একটি পাইপলাইনের মাধ্যমে পিক্সেলে রূপান্তরিত করে এবং বিভিন্ন পরিবর্তন বিভিন্ন (কম বা বেশি ব্যয়বহুল) পর্যায়গুলি ট্রিগার করে:
Style → Layout (reflow) → Paint → Composite
ব্রাউজার CSS পরিবর্তনগুলিকে একটি পাইপলাইনের মাধ্যমে পিক্সেলে রূপান্তরিত করে এবং বিভিন্ন পরিবর্তন বিভিন্ন (কম বা বেশি ব্যয়বহুল) পর্যায়গুলি ট্রিগার করে:
Style → Layout (reflow) → Paint → Composite
/* ❌ trigger LAYOUT (reflow) — costly, recalculates geometry every frame */
width, height, top, left, margin, padding, font-size
/* ⚠️ trigger PAINT — repaint pixels */
color, background, box-shadow, border-radius
/* ✅ trigger only COMPOSITE — GPU, no layout/paint */
transform, opacity
এটি একটি একক সবচেয়ে গুরুত্বপূর্ণ পারফরম্যান্স নিয়ম: transform এবং opacity অ্যানিমেট করুন, width/top/margin নয়। layout বৈশিষ্ট্যগুলি অ্যানিমেট করা প্রতিটি ফ্রেমে layout পুনরায় চালায় (jank); transforms GPU দ্বারা সংমিশ্রিত হয় (মসৃণ 60fps)।
/* ❌ janky */ @keyframes a { to { left: 300px; width: 200px; } }
/* ✅ smooth */ @keyframes b { to { transform: translateX(300px) scaleX(2); } }
.animated { will-change: transform; } /* promotes to its own GPU layer ahead of time */
will-change শুধুমাত্র অ্যানিমেট করার জন্য প্রস্তুত উপাদানগুলিতে ব্যবহার করুন — অত্যধিক ব্যবহার করা খুব বেশি স্তর তৈরি করে মেমোরি নষ্ট করে।
// ❌ read-write-read-write forces multiple synchronous reflows
for (const el of els) { el.style.width = el.offsetWidth + 10 + "px"; }
// ✅ batch reads, then writes
const widths = els.map(el => el.offsetWidth);
els.forEach((el, i) => el.style.width = widths[i] + 10 + "px");
- contain: layout/paint — isolate a subtree so changes don't reflow the whole page
- content-visibility: auto — skip rendering offscreen content
- minimize deep selectors and huge unused stylesheets
রেন্ডারিং পারফরম্যান্স মূলত layout বারবার ট্রিগার না করার বিষয়ে।
জানা যে transform/opacity composite-only (সাশ্রয়ী) যখন width/top/margin reflow জোর করে (ব্যয়বহুল) — layout thrashing এড়ানো এবং contain/content-visibility ব্যবহার করা ছাড়াও — এটি যা অ্যানিমেশনগুলিকে 60fps এ রাখে এবং পৃষ্ঠাগুলিকে দ্রুত অনুভব করায়।