Seriya: CSS Basics Dars 28

CSS Asoslari - 28-dars

CSS Transition va Animation o'rtasidagi farq. Qaysi CSS property'lar animatsiya qilinadi va performance. Layout, Paint va Composite bosqichlari. Qaysi property'lar tez, qaysilari sekin ishlaydi.

28-dars

Transition va Animation o'rtasidagi farq

1. CSS Transition nima?

Transition — bu holatdan holatga o'tish.

👉 Biror CSS property o'zgarsa, brauzer uni asta-sekin o'zgartiradi.

Asosiy xususiyati:

  • Trigger kerak (hover, class qo'shildi, focus, JS)
  • Boshlanishi bor, oxiri bor
  • Timeline yo'q

Misol:

.button {
  background: blue;
  transition: background 300ms ease;
}

.button:hover {
  background: red;
}

🧠 Bu yerda:

  • Hover bo'ldi → property o'zgardi → transition ishga tushdi
  • Hover yo'q → orqaga qaytadi

2. CSS Animation nima?

Animation — bu vaqt bo'yicha harakat.

👉 Holat o'zgarmasa ham, animation ishlayveradi.

Asosiy xususiyati:

  • Keyframes bor
  • Timeline bor
  • Trigger shart emas
  • Loop bo'lishi mumkin

Misol:

@keyframes spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

.loader {
  animation: spin 1s linear infinite;
}

🧠 Bu yerda:

  • Hech narsa o'zgarmadi
  • Element o'zi harakatda

3. Eng muhim farq (intervyu darajasida)

Holat Transition Animation
Trigger kerakmi ✅ Ha ❌ Yo'q
Timeline ❌ Yo'q ✅ Bor
Loop ❌ Yo'q ✅ Bor
Holatga bog'liq ✅ Ha ❌ Yo'q
UX micro-effect ✅ Eng yaxshi ❌ Ortiqcha

4. Qachon qaysini tanlash kerak?

✅ Transition ishlatiladi:

  • Hover
  • Focus
  • Open / close
  • Active state
  • Button feedback

👉 Sabab: foydalanuvchi harakat qildi → javob qaytdi

✅ Animation ishlatiladi:

  • Loader
  • Skeleton
  • Background effect
  • Attention drawing

👉 Sabab: vaqt asosida ishlaydi

5. Qaysi CSS property'lar animatsiya qilinadi?

1️⃣ Brauzer CSS'ni qanday "harakatlantiradi"?

CSS animatsiya — bu brauzer pipeline ichida sodir bo'ladi.

Har bir property o'zgarishi 3 bosqichdan birini ishga tushiradi:

🔴 1. Layout (Reflow) — ENG OG'IR

Element o'lchami yoki joyi o'zgardi

Butun sahifa qayta hisoblanishi mumkin

🧠 Trigger qiladiganlar:

  • width, height
  • margin, padding
  • top, left
  • font-size

🟠 2. Paint — O'RTACHA

O'lcham o'zgarmaydi

Faqat ko'rinishi qayta chiziladi

🧠 Trigger qiladiganlar:

  • background
  • color
  • box-shadow
  • border-radius

🟢 3. Composite — ENG TEZ

GPU layer'lar joyini o'zgartiradi

Layout ham, paint ham yo'q

🧠 Trigger qiladiganlar:

  • transform
  • opacity

2️⃣ Animatsiya qilinadigan property'lar (toifalab)

❌ YOMON (Layout trigger qiladi)

width
height
top
left
margin
padding

⚠️ Animatsiya qilsang:

  • FPS tushadi
  • Scroll qotadi
  • Telefon qiziydi 🔥

⚠️ O'RTACHA (Paint)

background-color
color
box-shadow
border-radius

👉 Kam, sekin, ehtiyot bilan

✅ ENG YAXSHI (Composite)

transform
opacity

👉 60fps 👉 GPU'da ishlaydi 👉 Smooth

3️⃣ Real hayot misoli

❌ Yomon variant:

.menu {
  width: 0;
  transition: width 300ms;
}

.menu.open {
  width: 300px;
}

🧠 Bu har frame'da layout qiladi.

✅ To'g'ri variant:

.menu {
  transform: translateX(-100%);
  transition: transform 300ms ease;
}

.menu.open {
  transform: translateX(0);
}

🧠 Faqat composite → tez 🔥

4️⃣ Nima uchun hamma property animatsiya qilinmaydi?

Sababi:

  • Brauzer har frame qayta hisoblaydi
  • 60fps = 16ms ichida hammasi bo'lishi kerak
  • Layout bunga ulgura olmaydi