Asosiy kontentga o‘tish
Innovialabs

CSS nima: selektorlar, kaskad va spetsifiklik

Asoslar3 daq

Qisqacha

CSS — bezash tili: selektor elementlarni tanlaydi, qoida uslublarni belgilaydi, ziddiyatda esa spetsifikligi yuqoriroq yoki teng bo‘lsa, kodda keyinroq yozilgan e’lon g‘olib bo‘ladi.

CSS nima va u qanday ishlaydi

CSS (Cascading Style Sheets) HTML elementlari qanday ko‘rinishini tasvirlaydi: ranglar, shriftlar, oraliqlar, joylashuv. HTML tuzilma uchun, CSS esa tashqi ko‘rinish uchun javob beradi.

Har bir qoida selektor va e’lonlardan iborat:

p {
  color: #333;
  line-height: 1.6;
}

p — selektor (barcha paragraflar), color: #333 — “xususiyat: qiymat” ko‘rinishidagi e’lon. Brauzer HTML’ni o‘qiydi, elementlar daraxtini quradi, har biri uchun mos qoidalarni topadi va yakuniy uslublarni hisoblaydi.

Asosiy selektorlar

SelektorMisolNimani tanlaydi
Teg bo‘yichapBarcha paragraflar
Klass bo‘yicha.cardclass="card" bo‘lgan elementlar
Id bo‘yicha#logoid="logo" bo‘lgan element
Atribut bo‘yicha[type="email"]Shu turdagi maydonlar
Avlod.card p.card ichidagi paragraflar
To‘g‘ridan-to‘g‘ri avlodul > liFaqat bevosita li elementlari
Psevdoklassa:hoverKursor ostidagi havola

Amalda vyorstkaning asosi — klasslar. Ular qayta ishlatiladi va spetsifiklik bilan muammo tug‘dirmaydi.

Kaskad: qoidalar bir nechta bo‘lsa nima bo‘ladi

Bitta elementga ko‘pincha bir xil xususiyatli bir nechta qoida mos keladi. Brauzer ziddiyatni quyidagi tartibda hal qiladi:

  1. Manba va muhimlik. Sayt muallifi uslublari brauzerning standart uslublarini bekor qiladi. !important e’lon ustuvorligini oshiradi.
  2. Spetsifiklik. Aniqroq selektor g‘olib bo‘ladi.
  3. Koddagi tartib. Spetsifiklik teng bo‘lsa, keyinroq e’lon qilingan qoida g‘olib.
.title { color: blue; }
.title { color: red; } /* g‘olib: keyinroq e’lon qilingan */

Spetsifiklik oddiy so‘zlar bilan

Spetsifiklik uchta son sifatida hisoblanadi: id — klasslar — teglar.

SelektorSpetsifiklik
p0-0-1
.card p0-1-1
.card .title0-2-0
#main .title1-1-0

Taqqoslash chapdan o‘ngga boradi: bitta id istalgan miqdordagi klassdan kuchli. “Klasslar”ga atributlar va psevdoklasslar ham kiradi, “teglar”ga esa ::before kabi psevdoelementlar. style="..." inlayn uslubi har qanday selektordan kuchli.

<p id="intro" class="lead">Matn</p>
#intro { color: green; } /* 1-0-0, g‘olib */
.lead  { color: blue; }  /* 0-1-0 */
p      { color: gray; }  /* 0-0-1 */

Meros olish

Ba’zi xususiyatlar ota elementdan meros olinadi: color, font-family, font-size, line-height. Shuning uchun shriftni body’da berish kifoya.

Boshqalari meros olinmaydi: margin, padding, border, background, width. Qiymatni majburan meros olish uchun inherit ishlatiladi:

button { font: inherit; }

Box model

Har bir element to‘rt qatlamli to‘rtburchak: content (kontent), padding (ichki oraliq), border (ramka), margin (tashqi oraliq).

Standart holatda width faqat kontent kengligini belgilaydi, padding va border esa ustiga qo‘shiladi. Shuning uchun width: 300px; padding: 20px blok aslida 340px egallaydi. Ko‘pchilik loyihalar bu xatti-harakatni o‘zgartiradi:

*, *::before, *::after {
  box-sizing: border-box;
}

Endi width padding va border’ni o‘z ichiga oladi va o‘lchamlarni hisoblash osonlashadi.

Ko‘p uchraydigan xatolar

  • !important bilan kurashish. Bu ziddiyatni vaqtincha o‘chiradi, lekin keyingi !important’ni yana bekor qilishga to‘g‘ri keladi. Selektorlarni soddalashtirgan ma’qul.
  • Id bo‘yicha bezash. Yuqori spetsifiklik keyin uslublarni qayta belgilashga xalaqit beradi.
  • .page .content .list .item a kabi uzun zanjirlar. Ular mo‘rt va belgilashga bog‘liq.
  • Unutilgan box-sizing, shu sababli bloklar setkaga sig‘maydi.

Qaysi qoida qo‘llanganini DevTools’dagi Styles bo‘limi ko‘rsatadi: chizib tashlangan e’lonlar kaskadda yutqazgan. To‘liq ma’lumotnoma — MDNda.

Ko‘p beriladigan savollar

Odatda <link rel="stylesheet"> orqali ulangan alohida faylda. Shunda uslublar keshlanadi va barcha sahifalarda qayta ishlatiladi. Inlayn uslublarni kamdan-kam nuqtaviy holatlar uchun qoldiring.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.