18 β @theme bilan dizayn tizimi¶
β¬ οΈ Oldingi: 17 β Transition, transform va animatsiya Β· π README Β· Keyingi: 19 β Custom utility va variant yaratish β‘οΈ
Bu bobda: Tailwind'ni "tayyor utility'lar to'plami"dan o'zingiz boshqaradigan dizayn tizimiga aylantiramiz. v4 ning yuragi bo'lgan
@themeblokini ochamiz: dizayn tokenlari (ranglar, spacing, shrift, radius, soya, breakpoint) qanday qilib bir vaqtning o'zida ham utility klass, ham haqiqiy CSS o'zgaruvchisi yaratishini, namespace (nom maydoni) tizimini, token qo'shish / ustiga yozish / o'chirish usullarini,@theme inlinening qachon kerakligini, semantik tokenlar bilan dark-mode'ga moslashuvchibg-surface/bg-primarynaqshini va to'liq bir brend temasini noldan qurishni o'rganasiz.
18.1 Avval nega? β utility'lar qayerdan keladi?¶
To'xtab, bir savol bering: bg-blue-500 klassi qayerdan paydo bo'ldi? p-4 dagi 4, rounded-lg dagi lg, text-2xl dagi 2xl β bularni kim belgilab qo'ygan?
Javob: dizayn tokenlari. Tailwind'ning butun utility to'plami bitta token jadvalidan generatsiya qilinadi. blue-500 degan rang token bo'lgani uchun bg-blue-500, text-blue-500, border-blue-500 mavjud. Agar token bo'lmasa β klass ham bo'lmaydi.
Mana shu yerda eng kuchli g'oya yashiringan: tokenlarni o'zgartirsangiz, butun dizayn tilingiz o'zgaradi. Brend rangingizni token qilib qo'shsangiz β bg-brand-500 darrov ishlaydi. Standart blue-500 ni o'zgartirsangiz β saytdagi har bir ko'k joy bir vaqtda yangilanadi. Spacing asosini o'zgartirsangiz β barcha masofalar mutanosib qayta o'lchanadi.
π‘ Analogiya. Token jadvali β bu rassomning palitrasi. Tailwind utility'lari β palitradagi har bir rangga tegishli mo'yqalamlar. Palitrani almashtirsangiz, hamma mo'yqalam yangi rangda chizadi. Siz har safar yangi rang aralashtirmaysiz β palitradan tanlaysiz. Dizayn tizimi aynan shu: cheklangan, ohangdosh tanlovlar to'plami.
Bu falsafa yangi emas β spacing scale bobida 4 ning karralari, ranglar bobida rang shkalasi bilan allaqachon uchratgansiz. Bu bob esa shu tizimni o'zingizniki qilishni o'rgatadi.
π v3 dan farq (bir martalik eslatma, keyin unutamiz). Tailwind v3 da tokenlarni
tailwind.config.jsfayldagitheme.extendobyektida JavaScript bilan sozlardingiz. v4 da JS config yo'q β hamma tokenlar CSS ichida,@themeblokida yashaydi. Agar internetdantheme: { extend: { colors: ... } }ko'rsangiz β bu eski v3 yo'li. Bu kitobning yo'li β@theme.
18.2 @theme qanday ishlaydi? β bitta blok, ikkita natija¶
@theme β CSS'ning maxsus bloki. Uning ichiga CSS custom property (o'zgaruvchi) yozasiz, Tailwind esa har bittasidan ikki narsa chiqaradi:
Bu bitta qatordan Tailwind quyidagilarni yaratadi:
- Utility klasslar β
bg-brand-500,text-brand-500,border-brand-500,ring-brand-500va hokazo. - Haqiqiy
:rooto'zgaruvchisi βvar(--color-brand-500)ni o'z CSS'ingizda istalgan joyda ishlatishingiz mumkin.
Kompilyatsiyadan keyin chiqqan CSS aynan shunday ko'rinadi:
:root {
--color-brand-500: oklch(0.62 0.19 250);
}
.bg-brand-500 {
background-color: var(--color-brand-500);
}
E'tibor bering β utility qiymatni emas, o'zgaruvchini ishlatadi (var(--color-brand-500), oklch(...) emas). Bu juda muhim: token bir joyda yashaydi, undan ham klasslar, ham o'zgaruvchilar oziqlanadi. Ana shu ikki tomonlama chiqish β @theme ning butun siri.
π Atamalar. Token (dizayn tokeni) β dizayn tizimidagi nomlangan qiymat (masalan, "brand-500" = falon ko'k). Namespace (nom maydoni) β token nomining boshidagi qism (
--color-,--spacing,--font-...) β u tokenning qaysi utility oilasiga tegishli ekanini belgilaydi.@themeβ shu tokenlar yashaydigan CSS bloki.π OKLCH nega? Misollarda ko'p uchraydigan
oklch(...)β bu zamonaviy, idrok jihatdan bir tekis rang formati. U haqida ranglar bobida batafsil gaplashganmiz; hozir shuni bilsangiz kifoya:oklch(yorqinlik to'yinganlik ottenok).
18.3 Namespace'lar β tokenni utility'ga bog'lovchi kalit¶
Token nomining boshidagi namespace Tailwind'ga "bu qaysi utility oilasini boshqaradi" deb aytadi. Buni bilsangiz β istalgan utility'ni o'zingiz nomlay olasiz. Mana asosiy namespace'lar va ular kuchaytiradigan utility'lar:
| Namespace | Qaysi utility'larni beradi | Misol token | Hosil bo'ladigan klass |
|---|---|---|---|
--color-* |
bg-*, text-*, border-*, ring-*, fill-* |
--color-brand-500 |
bg-brand-500 |
--font-* |
font-* (shrift oilasi) |
--font-display |
font-display |
--text-* |
text-* (shrift o'lchami) |
--text-tiny |
text-tiny |
--font-weight-* |
font-* (qalinlik) |
--font-weight-heavy |
font-heavy |
--tracking-* |
tracking-* (harf oralig'i) |
--tracking-tight |
tracking-tight |
--leading-* |
leading-* (qator balandligi) |
--leading-snug |
leading-snug |
--spacing |
p-*, m-*, w-*, h-*, gap-* |
--spacing |
hamma masofa |
--breakpoint-* |
responsive variantlar | --breakpoint-3xl |
3xl: |
--container-* |
max-w-* va container query'lar |
--container-prose |
max-w-prose |
--radius-* |
rounded-* |
--radius-card |
rounded-card |
--shadow-* |
shadow-* |
--shadow-glow |
shadow-glow |
--ease-* |
ease-* |
--ease-bounce |
ease-bounce |
--animate-* |
animate-* |
--animate-wiggle |
animate-wiggle |
--aspect-* |
aspect-* |
--aspect-card |
aspect-card |
--blur-* |
blur-* |
--blur-xs |
blur-xs |
Qoida sodda: --<namespace>-<nom> β <utility-prefiks>-<nom>. Token nomidagi <nom> o'zgarmaydi β --color-brand-500 da brand-500 qoladi, faqat namespace utility prefiksiga aylanadi.
π‘ Aynan shu sabab
--breakpoint-3xl: 120remyozsangiz, responsive bobida ko'rganimizdek,3xl:varianti o'z-o'zidan paydo bo'ladi β bu alohida sehr emas, oddiy namespace qoidasi.
18.4 Token qo'shish β yangi brend tokenlari¶
Eng ko'p qiladigan ishingiz β yangi tokenlar qo'shish. Standart temaning ustiga o'zingizning brend qiymatlaringizni qo'shasiz. Mana to'liq bir mini brend temasi:
@import "tailwindcss";
@theme {
/* Brend rang shkalasi β bir nechta ottenok SHART */
--color-brand-50: oklch(0.97 0.02 250);
--color-brand-100: oklch(0.93 0.04 250);
--color-brand-500: oklch(0.62 0.19 250);
--color-brand-600: oklch(0.55 0.19 250);
--color-brand-900: oklch(0.32 0.10 250);
/* Yangi shrift oilasi */
--font-display: "Satoshi", "Segoe UI", sans-serif;
/* Yangi breakpoint */
--breakpoint-3xl: 120rem; /* β 3xl: varianti, 1920px */
/* Yangi radius va soya */
--radius-card: 1.25rem; /* β rounded-card */
--shadow-glow: 0 0 24px oklch(0.62 0.19 250 / 0.45); /* β shadow-glow */
}
Endi HTML'da bularning hammasi tayyor:
<div class="rounded-card bg-brand-50 p-6 shadow-glow font-display">
<h2 class="text-brand-900">Brend kartasi</h2>
<button class="bg-brand-500 text-white hover:bg-brand-600">Davom etish</button>
</div>
β οΈ Eng ko'p uchraydigan xato β rangni bitta ottenok bilan qo'shish. Faqat
--color-brand-500yozsangiz,bg-brand-50yokitext-brand-900ishlamaydi β chunki ular alohida tokenlar. Brend rangini har doim shkala sifatida (kamida 50, 100, 500, 600, 900 β ideal holda 50β950 to'liq) qo'shing. Faqat shunda hover, fon, matn, chegara variantlari uyg'un bo'ladi.
18.5 Standart tokenni ustiga yozish (override)¶
Yangi token qo'shish o'rniga, mavjud standartni o'zgartirmoqchimisiz? Xuddi shu nom bilan tokenni qayta belgilang β Tailwind sizning qiymatingizni ishlatadi:
@theme {
/* Standart blue-500 ni brend ko'kiga almashtirish */
--color-blue-500: oklch(0.58 0.20 255);
/* Spacing asosini kattalashtirish β BUTUN sayt masofalari o'sadi */
--spacing: 0.3rem; /* default 0.25rem edi; p-4 endi 1.2rem */
/* Standart sans shriftini almashtirish */
--font-sans: "Inter", "Segoe UI", sans-serif;
}
Bu yerda kuch ham, xavf ham bor. --spacing ni o'zgartirsangiz, p-4, gap-6, w-12 β hammasi bir vaqtda qayta o'lchanadi (chunki spacing bobida ko'rganimizdek, ularning bari shu bitta asosning karralari). Bu juda qulay β bitta qator bilan butun saytning "zichligi"ni sozlaysiz. Lekin shuning uchun ham ehtiyot bo'ling: kichik o'zgarish ham hamma joyga tarqaydi.
18.6 Tokenni o'chirish β palitrani cheklash¶
Ba'zan tokenlarni olib tashlash kerak bo'ladi. Eng keng tarqalgan sabab β jamoaga faqat brend ranglarini ishlatishni majburlash. Standart 22 ta rang oilasi ochiq tursa, kimdir bg-rose-400 yoki text-lime-600 ishlatib, brenddan chiqib ketishi mumkin. Yechim β standart ranglarni o'chirib, faqat o'zingiznikini qoldirish.
Bitta namespace'ni butunlay o'chirish uchun uni initial ga tenglang:
@theme {
/* Barcha standart ranglarni o'chirish */
--color-*: initial;
/* Endi FAQAT shu ranglar mavjud */
--color-brand-500: oklch(0.62 0.19 250);
--color-brand-600: oklch(0.55 0.19 250);
--color-white: #ffffff;
--color-black: #000000;
}
Endi bg-red-500 deb yozsangiz β klass umuman yaratilmaydi, ya'ni dizaynchining xatosi darrov ko'rinadi. Bu β qattiq, lekin samarali tartib-intizom.
Boshqa namespace'larni ham xuddi shunday o'chirasiz:
@theme {
--breakpoint-*: initial; /* barcha standart breakpointlarni o'chirish */
--breakpoint-sm: 40rem; /* faqat kerakli ikkitasini qoldirish */
--breakpoint-lg: 64rem;
}
Eng radikal variant β butun standart temani tashlab, noldan boshlash:
@theme {
--*: initial; /* HAMMA standart token o'chiriladi */
/* ...endi har bir tokenni o'zingiz belgilaysiz */
}
β οΈ
--*: initial;β kuchli, lekin og'ir vosita. Undan keyin spacing, ranglar, shriftlar β hech narsa qolmaydi, hammasini qo'lda qurishingiz kerak. Buni faqat to'liq maxsus dizayn tizimi quryotgan bo'lsangiz tanlang; aksariyat loyihalarda standart temaning ustiga qo'shish kifoya.
18.7 Tokenlarni bir-biriga bog'lash¶
Token qiymati boshqa tokenga ishora qilishi mumkin β var() orqali:
Bu "primary rang β bu indigo-600" degan semantik bog'lanish yaratadi. Endi bg-primary ishlaydi, va agar keyinchalik brend rangini boshqa indigo ottenokiga ko'chirsangiz, bitta qatorni o'zgartirib qo'yasiz.
Tokenni o'z CSS'ingizda ham bemalol ishlatasiz β u oddiy :root o'zgaruvchisi:
/* Tailwind utility bo'lmagan maxsus stil */
.fokus-halqa {
box-shadow: 0 0 0 3px var(--color-brand-500);
}
Mana shu β tokenlarning ikki tomonlama tabiati amalda: bitta --color-brand-500 ham bg-brand-500 klassini, ham yuqoridagi qo'lda yozilgan CSS'ni oziqlantiradi. Manba bitta.
18.8 @theme inline β qachon va nega?¶
Odatda Tailwind utility ichiga o'zgaruvchini qo'yadi (var(--color-brand-500)). Lekin ba'zan utility ichiga hal qilingan qiymatning o'zi kerak bo'ladi β o'zgaruvchi emas. Aynan shu holatda @theme inline ishlatiladi.
Eng muhim foydasi β semantik token boshqa joyda (masalan, .dark da) qayta belgilanadigan holatlar. Odatdagi @theme bilan semantik token qiymati utility'ga "qotirilib" qoladi va keyin .dark ostida o'zgarsa, utility uni sezmaydi. inline esa utility'ga to'g'ridan-to'g'ri o'zgaruvchiga ishora qo'yadi, shuning uchun kontekst o'zgarganda (dark rejim) utility yangi qiymatga ergashadi:
@import "tailwindcss";
/* Asos (yorug') va dark uchun semantik o'zgaruvchilar */
:root {
--surface: oklch(0.99 0 0); /* deyarli oq */
--ink: oklch(0.20 0 0); /* deyarli qora */
}
.dark {
--surface: oklch(0.21 0.01 260);
--ink: oklch(0.95 0 0);
}
/* inline β utility o'zgaruvchiga ishora qiladi, qiymatni QOTIRMAYDI */
@theme inline {
--color-surface: var(--surface);
--color-ink: var(--ink);
}
Endi bg-surface text-ink avtomatik temalanadi: yorug' rejimda oq fon + qora matn, .dark ostida esa qorong'i fon + oq matn β bitta klass, qo'shimcha dark: variant yozmasdan:
<div class="bg-surface text-ink p-6 rounded-xl">
Bu blok ikkala rejimda ham o'zini to'g'ri bo'yaydi.
</div>
π‘ Soddacha qoida.
@theme inlineni token qiymati boshqa o'zgaruvchiga ishora qilganda yoki kontekstga qarab o'zgarganda (dark mode, tema almashtirish) ishlating. Oddiy, qat'iy qiymatlar (--color-brand-500: oklch(...)) uchun esa oddiy@themekifoya. Dark mode strategiyasini to'liq 16-bobda ko'rgansiz; bu yerda uni token darajasida qanday bog'lashni qo'shdik.
18.9 Semantik tokenlar β professional naqsh¶
bg-brand-500 β to'g'ri, lekin semantik nom undan ham kuchli. bg-surface, text-muted, bg-primary, border-subtle kabi nomlar maqsadni bildiradi, aniq rangni emas. Ertaga brendni qayta ranglaganingizda, HTML'dagi yuzlab bg-indigo-600 ni qidirib o'zgartirmaysiz β bitta token qiymatini almashtirib qo'yasiz.
Amaliy naqsh: semantik tokenlarni shkala qiymatlariga bog'lang.
@theme inline {
--color-surface: var(--color-white);
--color-surface-2: var(--color-slate-100);
--color-primary: var(--color-indigo-600);
--color-primary-hover: var(--color-indigo-700);
--color-muted: var(--color-slate-500);
--color-border-subtle: var(--color-slate-200);
}
Natijada HTML "rang nomi"da emas, "rol"da gapiradi β bu o'qishni osonlashtiradi va dizaynni markazdan boshqarishga imkon beradi:
<article class="bg-surface border border-border-subtle rounded-xl p-6">
<h3 class="text-primary text-xl">Sarlavha</h3>
<p class="text-muted">Yordamchi matn.</p>
<button class="bg-primary text-white hover:bg-primary-hover">Tugma</button>
</article>
Bu naqsh β dark mode (16-bob), tema almashtirish va katta jamoa ishini ulanish nuqtasi. Keyingi bobda shu tokenlardan custom utility va variant yasashni ko'rasiz.
18.10 Amaliy misol β to'liq brend dizayn tizimi¶
Endi hammasini birlashtirib, kichik, lekin to'liq dizayn tizimi quramiz: brend rang shkalasi, spacing, radius va shrift β keyin shulardan brendga mos tugma va karta yasaymiz.
@import "tailwindcss";
@theme {
/* 1. Brend rang shkalasi (50 β 900) */
--color-brand-50: oklch(0.97 0.02 265);
--color-brand-100: oklch(0.93 0.05 265);
--color-brand-200: oklch(0.86 0.09 265);
--color-brand-500: oklch(0.60 0.20 265);
--color-brand-600: oklch(0.53 0.20 265);
--color-brand-700: oklch(0.46 0.18 265);
--color-brand-900: oklch(0.30 0.10 265);
/* 2. Shrift */
--font-display: "Satoshi", "Segoe UI", sans-serif;
/* 3. Radius va soya */
--radius-card: 1rem;
--shadow-card: 0 8px 24px oklch(0.30 0.10 265 / 0.15);
}
/* 4. Semantik qatlam β inline, kelajakda dark uchun ham tayyor */
@theme inline {
--color-surface: var(--color-white);
--color-primary: var(--color-brand-600);
--color-primary-hover: var(--color-brand-700);
}
Mana shu tema'dan qurilgan markup β hech qanday "sehrli son" yo'q, hammasi tokendan:
<div class="bg-surface rounded-card shadow-card p-6 font-display max-w-sm">
<span class="inline-block bg-brand-100 text-brand-700 text-sm px-3 py-1 rounded-full">
Yangi
</span>
<h2 class="mt-4 text-brand-900 text-2xl">Pro tarif</h2>
<p class="mt-2 text-slate-600">Cheksiz loyihalar va birinchi darajali yordam.</p>
<button class="mt-5 w-full bg-primary text-white rounded-lg py-2.5
hover:bg-primary-hover transition-colors">
Hoziroq boshlash
</button>
</div>
Quyidagi rasm aynan shu tema'ni β rang shkalasi, spacing asosi, radius, shrift namunasi va ulardan yasalgan tugmani β bir "dizayn tizimi paneli" sifatida ko'rsatadi:
E'tibor bering β tugmaning rangi bg-primary, u esa --color-brand-600 ga ishora qiladi. Ertaga ottenok 270 ga ko'chsangiz, faqat shkalani yangilaysiz; tugma, badge, sarlavha β hammasi birga o'zgaradi. Mana bu β dizayn tizimi degani.
18.11 @theme ga nima YOZMASLIK kerak¶
@theme β faqat token e'lonlari uchun. Unga oddiy CSS qoidalarini (selektorlar, .class { ... }) yozib bo'lmaydi. Bu β eng ko'p uchraydigan tushunmovchilik:
/* β NOTO'G'RI β @theme ga selektor/qoidalar yozilmaydi */
@theme {
--color-brand-500: oklch(0.62 0.19 250);
.karta { padding: 2rem; } /* bu yerga to'g'ri kelmaydi */
body { background: var(--color-surface); }
}
Token bo'lmagan CSS uchun oddiy CSS yoki @layer dan foydalaning:
/* β
TO'G'RI β tokenlar @theme'da, qoidalar tashqarida */
@theme {
--color-brand-500: oklch(0.62 0.19 250);
}
@layer components {
.karta { padding: 2rem; background: var(--color-brand-50); }
}
π‘ Eslab qoling:
@themeichida faqat--namespace-nom: qiymat;ko'rinishidagi qatorlar bo'ladi. Boshqa hamma narsa β undan tashqarida.
18.12 Tez-tez uchraydigan xatolar¶
- Rangni bitta ottenok bilan qo'shish. Faqat
--color-brand-500yozib, keyinbg-brand-50kutish. Rang har doim shkala (50β950) bo'lsin. theme.extend(JS) izlash. Bu v3 yo'li. v4 da JS config yo'q β@themeCSS'da. (Eski loyihani ko'chirayotgan bo'lsangiz, vaqtincha@config "../tailwind.config.js";orqali ulash mumkin β buni migratsiya bobida ko'rasiz.)@themega oddiy CSS yozish. Selektor va qoidalar@layer/oddiy CSS'da;@themefaqat tokenlar uchun.@theme inlineni doim ishlatish. Inline faqat o'zgaruvchiga ishora qiluvchi yoki kontekstda (dark) o'zgaradigan tokenlar uchun; qat'iy qiymatlar uchun oddiy@themekifoya.- Namespace nomini chalkashtirish. Yangi rang
--brand-500emas,--color-brand-500bo'lishi shart β namespace bo'lmasa, Tailwind uni qaysi utility oilasiga qo'shishni bilmaydi. --*: initial;ni keraksiz joyda ishlatish. U butun standart temani o'chiradi; aksariyat loyihada ustiga qo'shish to'g'riroq.
π Oldinga qarash. Tokenlar bilan tema'ni shakllantirishni o'rgandingiz. Lekin ba'zan token yetmaydi β sizga butunlay yangi utility (masalan,
tab-4) yoki yangi variant (group-hoverkabi maxsus holat) kerak bo'ladi. Buning uchun@utilityva@variantbor β keyingi bob shu haqida, va u aynan shu bobdagi tokenlarning ustiga quriladi. Eslatma: bu yerda ishlatgan CSS o'zgaruvchilari g'oyasining ildizi β zamonaviy CSS bobidagi custom property'lar.
Mashqlar¶
1-mashq. Bir hamkasbingiz @theme ichiga --brand-500: #4f46e5; yozdi va keyin HTML'da bg-brand-500 ishlamasligidan hayron. Xato nimada? Tuzating.
Yechim
Token nomida namespace yo'q. Tailwind --brand-500 ni qaysi utility oilasiga qo'shishni bilmaydi (rangmi? spacingmi?). Rang utility'lari (bg-*/text-*/...) --color-* namespace'idan keladi, shuning uchun:
Qoida: --<namespace>-<nom>. Rang uchun namespace β --color-.
2-mashq. Loyihangizga --font-display deb nomlangan yangi sarlavha shrifti ("Clash Display") kerak. Uni @theme'da belgilang va bitta <h1> da ishlating.
Yechim
--font-* namespace'i font-* utility'sini yaratadi β shuning uchun token --font-display β klass font-display.
3-mashq. Dizayn direktori "saytda faqat brend ranglari ishlatilsin, hech kim tasodifan bg-pink-300 yozmasin" dedi. v4 da buni qanday majburlaysiz? Kod yozing.
Yechim
Barcha standart rang tokenlarini initial bilan o'chirib, faqat brend shkalasini qoldiramiz:
@theme {
--color-*: initial; /* hamma standart rang o'chadi */
--color-brand-50: oklch(0.97 0.02 250);
--color-brand-500: oklch(0.62 0.19 250);
--color-brand-600: oklch(0.55 0.19 250);
--color-brand-900: oklch(0.32 0.10 250);
--color-white: #ffffff;
--color-black: #000000;
}
Endi bg-pink-300 klassi umuman generatsiya qilinmaydi β dasturchi xatosi darrov ko'rinadi. Aniq cheklov = tartib-intizom.
4-mashq. bg-surface va text-ink klasslari yorug' rejimda oq fon/qora matn, .dark rejimda esa qorong'i fon/oq matn bo'lsin β qo'shimcha dark: variant yozmasdan. Tokenlarni qanday tuzasiz?
Yechim
Semantik o'zgaruvchilarni :root/.dark da belgilab, ularni @theme inline orqali tokenΠ³Π° bog'laymiz:
:root {
--surface: oklch(0.99 0 0);
--ink: oklch(0.20 0 0);
}
.dark {
--surface: oklch(0.21 0.01 260);
--ink: oklch(0.95 0 0);
}
@theme inline {
--color-surface: var(--surface);
--color-ink: var(--ink);
}
inline muhim: u utility'ga o'zgaruvchiga ishorani qo'yadi, shuning uchun .dark qiymatni almashtirganda bg-surface avtomatik ergashadi. Oddiy @theme bo'lsa, qiymat qotib qolardi.
5-mashq. Butun saytning "zichligi"ni biroz oshirmoqchisiz β barcha padding, margin, gap, width 20% kattaroq bo'lsin, lekin har bir klassni qo'lda o'zgartirmasdan. Eng oddiy yo'l qaysi?
Yechim
Bitta token β --spacing asosini o'zgartirish kifoya. Standart 0.25rem; uni 20% kattalashtiramiz:
Endi p-4 = 1.2rem (avval 1rem edi), gap-6, w-12 β hammasi mutanosib o'sadi, chunki bu utility'larning bari shu bitta asosning karralari (04-bob). Bitta qator β butun sayt qayta o'lchanadi.
6-mashq (debugging). Quyidagi CSS xato beradi β @theme'dagi tugma stili qo'llanmayapti. Sababini toping va to'g'rilang.
@theme {
--color-brand-500: oklch(0.62 0.19 250);
.btn { background: var(--color-brand-500); color: white; }
}
Yechim
@theme ichiga selektor/qoida (.btn { ... }) yozib bo'lmaydi β u faqat token e'lonlari (--namespace-nom: qiymat;) uchun. Qoidani tashqariga, oddiy CSS yoki @layer'ga chiqaramiz:
@theme {
--color-brand-500: oklch(0.62 0.19 250);
}
@layer components {
.btn { background: var(--color-brand-500); color: white; }
}
Token @theme'da, qoida tashqarida β ikkisi har xil ish bajaradi.
β¬ οΈ Oldingi: 17 β Transition, transform va animatsiya Β· π README Β· Keyingi: 19 β Custom utility va variant yaratish β‘οΈ