Font va Text — family, size, weight, align, decoration
Muammodan boshlaylik
Veb-sahifadagi ma'lumotning 90% i — matn. Ranglar, animatsiyalar, rasmlar ikkinchi darajali: agar matnni o'qish qiyin bo'lsa, foydalanuvchi ketadi.
Yomon tipografiyaning tipik belgilari: Times New Roman shrifti, qatorlar bir-biriga yopishgan, butun sahifa bo'ylab cho'zilgan 200 belgilik qatorlar, och kulrang fonda och kulrang matn. Bularning hammasi bir necha CSS xususiyati bilan tuzatiladi.
font-family — shrift oilasi
body {
font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}
code {
font-family: 'JetBrains Mono', ui-monospace, Consolas, monospace;
}
Bu — zaxira ro'yxati (font stack): brauzer chapdan o'ngga qarab, birinchi mavjud shriftni ishlatadi. Oxirida doim umumiy oila turishi kerak:
| Umumiy oila | Qanday |
|---|---|
sans-serif |
"Oyoqchasiz" — ekran uchun eng ko'p ishlatiladigan |
serif |
"Oyoqchali" — kitob, gazeta uslubi |
monospace |
Har bir belgi bir xil kenglikda — kod uchun |
system-ui |
Operatsion tizimning o'z shrifti (Windows da Segoe UI, Mac da San Francisco) |
Bo'shliqli nomlar — qo'shtirnoqda: 'Segoe UI'.
Veb-shriftlarni ulash
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap" rel="stylesheet">
Yoki o'z serveringizdan:
@font-face {
font-family: 'Inter';
src: url('/fonts/inter.woff2') format('woff2');
font-weight: 100 900; /* o'zgaruvchan shrift — barcha qalinliklar bitta faylda */
font-display: swap;
}
woff2— eng yaxshi siqilgan format; boshqasi kerak emasfont-display: swap— shrift yuklanguncha matn zaxira shrift bilan ko'rinadi (bo'sh ekran o'rniga)- Faqat ishlatiladigan qalinliklarni yuklang — har biri qo'shimcha fayl
[!TIP] O'zbek tilidagi matn uchun shriftda o' va g' dagi apostrofni (
ʻyoki') yaxshi ko'rsatadigan, lotin kengaytirilgan (Latin Extended) to'plamli shrift tanlang. Inter, Roboto, Open Sans, Montserrat — yaxshi ishlaydi.
font-size — o'lcham
html { font-size: 100%; } /* 16px — foydalanuvchi sozlamasi */
body { font-size: 1rem; }
h1 { font-size: 2.25rem; } /* 36px */
h2 { font-size: 1.75rem; } /* 28px */
small, .caption { font-size: 0.875rem; } /* 14px */
11-darsdan: shriftlar — rem da. Asosiy matn uchun 16px dan kam bo'lmasin — mobil telefonlarda kichikroq matnni o'qish qiyin, va iOS 16px dan kichik shriftli input ga bosilganda sahifani avtomatik kattalashtiradi.
Bir xil nisbatli o'lchamlar shkalasi (masalan, har bir daraja 1.25 baravar katta) dizaynni uyg'un qiladi: 1rem → 1.25 → 1.563 → 1.953 → 2.441.
font-weight — qalinlik
p { font-weight: 400; } /* normal */
strong { font-weight: 700; } /* bold */
.title { font-weight: 600; } /* semibold */
| Qiymat | Nomi |
|---|---|
| 100 | Thin |
| 300 | Light |
| 400 | Regular (normal) |
| 500 | Medium |
| 600 | Semibold |
| 700 | Bold (bold) |
| 900 | Black |
Agar shriftning kerakli qalinligi yuklanmagan bo'lsa, brauzer uni "sun'iy" qalinlashtiradi — natija xunuk. Ishlatiladigan har bir qalinlikni yuklang.
font-style: italic — qiya yozuv.
line-height — qator balandligi
O'qiluvchanlik uchun eng muhim xususiyat:
body {
line-height: 1.6;
}
h1, h2, h3 {
line-height: 1.2;
}
- Asosiy matn: 1.5–1.7
- Sarlavhalar: 1.1–1.3 (katta shriftda qatorlar orasi baribir katta ko'rinadi)
[!INFO]
line-heightni birliksiz yozing:1.6,1.6emyoki24pxemas. Birliksiz qiymat bola elementlarga koeffitsient sifatida meros o'tadi va har birining o'z shriftiga moslashadi.24pxesa bir xil meros o'tadi — kichik shriftli elementda qatorlar juda uzoq, kattasida esa ustma-ust tushib qoladi.
Matnni tekislash va bezash
text-align
.center { text-align: center; }
.right { text-align: right; }
article { text-align: start; } /* matn yo'nalishiga qarab (chap yoki o'ng) */
justify (ikki chetdan tekislash) ekranda ko'pincha so'zlar orasida "teshiklar" hosil qiladi — vebda kamdan-kam ishlatiladi.
[!INFO]
text-aligninline kontentni (matn, rasm,inline-block) tekislaydi, blok elementlarni emas. Blokni markazlash —margin: 0 auto(7-dars) yoki Flexbox (13-dars).
text-decoration
a {
text-decoration: underline;
text-decoration-thickness: 1px;
text-underline-offset: 3px; /* chiziq harflardan biroz pastroq */
}
a:hover {
text-decoration-thickness: 2px;
}
.eski-narx {
text-decoration: line-through;
}
Matn ichidagi havolalardan tagidagi chiziqni olib tashlamang — rang yolg'iz o'zi havolani ajratish uchun yetarli emas (rangni ajrata olmaydiganlar ko'p). Menyu va tugmalarda esa olib tashlash mumkin.
text-transform va letter-spacing
.label {
text-transform: uppercase;
letter-spacing: 0.05em; /* katta harflar orasiga biroz bo'shliq */
font-size: 0.75rem;
}
HTML da matnni katta harflar bilan yozmang ("KURSLAR") — text-transform bilan qiling. Ekran o'quvchilar katta harfli matnni harfma-harf o'qishi mumkin, va keyinchalik dizaynni o'zgartirish oson bo'ladi.
Rang va kontrast
body {
color: #1e293b; /* toza qora (#000) emas — ko'zni kamroq charchatadi */
background: #ffffff;
}
.muted {
color: #64748b;
}
Matn va fon orasidagi kontrast yetarli bo'lishi kerak. WCAG standarti: oddiy matn uchun kamida 4.5:1, katta sarlavhalar uchun 3:1. Och kulrang (#cbd5e1) oq fonda — o'qib bo'lmaydi. DevTools da rang namunasiga bosing — kontrast nisbati ko'rsatiladi.
O'qiladigan maqola — hammasi birga
.article {
max-width: 65ch; /* 11-dars: qulay qator uzunligi */
margin: 0 auto;
font-family: 'Inter', system-ui, sans-serif;
font-size: 1.125rem; /* 18px */
line-height: 1.7;
color: #1e293b;
}
.article h2 {
font-size: 1.75rem;
line-height: 1.25;
font-weight: 700;
margin: 2.5rem 0 1rem;
}
.article p + p {
margin-top: 1.25em; /* 4-dars: paragraflar orasidagi bo'shliq */
}
.article a {
color: #2563eb;
text-underline-offset: 3px;
}
Nima uchun shunday?
Nima uchun shrift va matn uchun shunchalik ko'p e'tibor — bu shunchaki "chiroy" masalasi emasmi?
Yo'q — bu funksionallik. Tadqiqotlar ko'rsatadiki, qator uzunligi, qator balandligi va kontrast o'qish tezligi va tushunishga bevosita ta'sir qiladi: juda uzun qatorda ko'z keyingi qatorning boshini yo'qotadi, zich qatorlarda ko'z charchaydi, past kontrastda esa ko'zoynak taqadiganlar va quyoshda telefondan o'qiyotganlar matnni umuman ko'ra olmaydi. Dasturlash darsliklari uchun bu ikki karra muhim: foydalanuvchi uzun va murakkab matnni diqqat bilan o'qiydi. Yaxshi tipografiya ko'rinmaydi — u shunchaki o'qishni oson qiladi. Yomon tipografiya esa har bir qatorda o'zini his qildiradi.
Xulosa
Eslab qoling:
font-family— zaxira ro'yxati, oxirida umumiy oila (sans-serif)- Veb-shrift:
woff2,font-display: swap, faqat kerakli qalinliklar font-size—remda; asosiy matn kamida 16pxfont-weight— 400 normal, 700 bold; kerakli qalinlikni yuklangline-height— birliksiz: matn 1.5–1.7, sarlavha 1.1–1.3text-align— inline kontentni tekislaydi, bloklarni emas- Matndagi havolalarda tagidagi chiziqni qoldiring;
text-underline-offset text-transform: uppercase— HTML da katta harf bilan yozish o'rniga- Kontrast — kamida 4.5:1
Keyingi bo'lim
3-bo'lim: Layout — Flexbox — elementlarni qatorga va ustunga joylashtirish, markazlash va moslashuvchan layoutlar.