BEM (Block-Element-Modifier) nomlash konventsiyasi va katta loyihalarda CSS'ni tashkil qilish — misol, test va amaliy topshiriqlar bilan.
BEM — Block, Element, Modifier: .block__element--modifier formatida CSS klasslarini nomlash metodologiyasi.
index.htmlHTML<div class="card"><h3 class="card__title">Sarlavha</h3><p class="card__text card__text--highlighted">Matn</p></div>
styles.cssCSS.card { padding: 16px; }.card__title { font-weight: bold; }.card__text { color: gray; }.card__text--highlighted { color: black; font-weight: bold; }
🧠 BEM'ning asosiy maqsadi — CSS specificity urushlarini oldini olish. Har bir klass FLAT (bir darajali) specificity'ga ega bo'ladi, chunki BEM ichma-ich selektorlardan (div p span) emas, faqat class nomlaridan foydalanadi.
⚠️ Common Mistake
BEM bilan ham ichma-ich selektorlar (.card .card__title) yozishga urinish — bu BEM falsafasiga zid, chunki BEM klasslar mustaqil, ota-bola bog'liqligisiz ishlashi kerak.
Task: .button, .button__icon, .button--primary klasslarini o'z ichiga olgan tugma componentini yarating.
Task: To'liq .navbar blokini BEM metodologiyasida yarating: .navbar__logo, .navbar__link, .navbar__link--active.
Task: Katta forma componentini (.form, .form__field, .form__label, .form__input--error) BEM bilan qurib, xato holatini modifikator orqali ko'rsating.
styles.cssCSS.card .title { font-weight: bold; }
index.htmlHTML<div class="card"><h3 class="title">Sarlavha</h3></div>
Your Task: Bu CSS BEM tamoyillariga mos keladimi? Nega yo'q, va qanday tuzatish kerak?
<details> <summary>Solution</summary> Yo'q, bu ichma-ich (nested) selektor — BEM'ga zid, chunki `.title` `.card`dan tashqarida ishlatilsa boshqacha ishlaydi. To'g'ri BEM yechimi: `.card__title { font-weight: bold; }` va HTML'da `class="card__title"`. </details>BEM (.block__element--modifier) — CSS'ni flat, mustaqil va qayta ishlatiluvchi qismlarga bo'luvchi nomlash metodologiyasi. U specificity urushlarini oldini oladi va katta loyihalarda kod bazasini boshqarishni osonlashtiradi.
__ — Element, -- — Modifierstyles.cssCSS.block { }.block__element { }.block--modifier { }.block__element--modifier { }
Mavzu bo‘yicha tushunchalaringizni interaktiv test orqali sinovdan o‘tkazing va natijalarni bilib oling.
Darslik ichidagi interaktiv muharrirda berilgan barcha amaliy topshiriqlarni bajaring va avto-tekshiruvdan o‘ting.
Test Sinovi
Hali topshirilmagan (kamida 75% kerak)
Amaliy Laboratoriya
Laboratoriya muharririda testlarni topshiring
Dars sifati va mazmunini yaxshilash uchun o‘z haqqoniy bahoingizni qoldiring.
Mavzuni to‘liq o‘zlashtirish uchun test sinovi, amaliy kodlash va bog‘liq darslar
O‘z bilimingizni interaktiv test savollari orqali tekshiring va darhol xatolarni tahlil qiling.
Nazariyani real kod yozish bilan mustahkamlang, avtomatik testlardan o‘ting va XP to‘plang.
Kurs bo‘yicha keyingi va bog‘liq mavzular: