14 β Soya, filter va mask¶
β¬ οΈ Oldingi: 13 β Fon, gradient va chegara Β· π README Β· Keyingi: 15 β Holat variantlari β‘οΈ
Bu bobda: Interfeysga chuqurlik va hayot beruvchi effektlarni o'rganamiz:
shadow-*bilan balandlik (elevation),inset-shadow/ring,opacity,blur/brightness/grayscalekabi filtrlar,backdrop-blurbilan muzlagan shisha (frosted glass),mix-blend-*aralashtirish rejimlari, hamda v4.1 da kelgan yangiliklar βmask-*(rasm chetini erish) vatext-shadow-*(matn soyasi). Yo'l-yo'lakay v4 da soya shkalasi nomlari o'zgargani (v3 dan farq) haqida ham ogohlantiramiz.
14.1 Avval nega? β tekis ekranga chuqurlik berish¶
Ekran tekis. Lekin yaxshi interfeys tekis ko'rinmaydi: tugma bosilishga tayyordek "ko'tarilib" turadi, modal sahifa ustida "suzadi", dropdown menyu kontentdan "balandda" ochiladi. Bu his-tuyg'uni beradigan asosiy vosita β soya.
Asl g'oya juda sodda: real dunyoda biror narsa yuzadan qancha baland bo'lsa, uning soyasi shuncha katta, tarqoq va yumshoq bo'ladi. Stol ustidagi qog'ozning soyasi ingichka; tepada osilgan lampaning soyasi keng. Tailwind aynan shu balandlik (elevation) tilini shadow-xs dan shadow-2xl gacha bo'lgan shkala bilan beradi.
Bu tushunchalar yangi emas β toza CSS'da bularni box-shadow, filter: blur(), backdrop-filter bilan yozgansiz (buni HTML & CSS kitobining fon va soyalar bobida ko'rgansiz). Tailwind hech narsani o'ylab topmaydi β u shu xususiyatlarni utility klasslar ko'rinishida, tayyor, izchil shkala bilan beradi.
π Atamalar. Elevation β element sahifa yuzasidan qanchalik "baland" ko'tarilgani; soya o'lchami bilan ifodalanadi. Box-shadow β elementning to'rtburchak kuti atrofidagi soya. Drop-shadow β elementning haqiqiy shakli (alfa kanali) bo'ylab tushuvchi soya. Backdrop filter β elementning orqasidagi narsalarga (foniga) qo'llanadigan filter.
14.2 Box-shadow shkalasi β balandlik tili¶
Tailwind'da balandlik shkalasi ettita pog'onadan iborat, eng pastdan eng balandgacha:
| Klass | Balandlik | Odatda qayerda |
|---|---|---|
shadow-2xs |
juda nozik | ramka o'rnida, ingichka ajratish |
shadow-xs |
nozik | kichik kartalar, inputlar |
shadow-sm |
past | oddiy karta |
shadow-md |
o'rta | dropdown, hover holati |
shadow-lg |
baland | popover, suzuvchi panel |
shadow-xl |
balandroq | katta panel |
shadow-2xl |
eng baland | modal, dialog |
shadow-none |
soya yo'q | soyani o'chirish (mas. hover'da) |
Aqliy model: kichik soya = subtle karta, katta soya = modal/popover/dropdown. Quyidagi rasm shu balandlik tuyg'usini ko'rsatadi β soya kattalashgan sayin karta sahifadan ko'tariladi:
<div class="rounded-xl bg-white p-6 shadow-sm">Oddiy karta</div>
<div class="rounded-xl bg-white p-6 shadow-md">Dropdown</div>
<div class="rounded-xl bg-white p-6 shadow-2xl">Modal β eng baland</div>
β οΈ v4 da shkala nomlari o'zgargan β eng ko'p adashtiruvchi joy! v3 da eng kichik soya
shadow-sm, oddiy soya esa shunchakishadowedi. v4 da shkala bir pog'ona siljidi: eskishadowendishadow-sm, eskishadow-smesa endishadow-xs. Ya'ni v3 dan kelgan kodda yoki internetdagi eski darsdan ko'chirganshadowni ko'rsangiz β u prefikssizshadowsifatida v4 da ishlamaydi; unishadow-smga, eskishadow-smni esashadow-xsga aylantiring. Yangi kodda doim nomlangan o'lchamni (-xs,-sm,-md, ...) yozing, prefikssizshadowni emas.
14.3 Rangli soya va yorqinlik (glow)¶
Soya doim kulrang bo'lishi shart emas. v4 da soyaga rang berish mumkin β bu brend rangidagi yumshoq nur (glow) effektini beradi:
<!-- Indigo rangli, yarim-shaffof yorqin soya -->
<button class="rounded-lg bg-indigo-500 px-5 py-2 text-white shadow-lg shadow-indigo-500/40">
Yorqin tugma
</button>
Bu yerda shadow-lg β soyaning o'lchami/tarqoqligi, shadow-indigo-500/40 esa uning rangi (40% shaffoflik bilan). Ikkalasini birga yozasiz. Rangli soyalar ayniqsa asosiy harakat tugmalari (CTA) va "promo" kartalarda chiroyli chiqadi, lekin me'yorida ishlating.
14.4 Inset soya, ring va qatlamlash¶
Ba'zan soya ichkariga kerak β element "bosilgan" yoki "chuqurchaga botgan"dek ko'rinishi uchun. Buning uchun v4 da inset-shadow-* bor:
<!-- Bosilgan/chuqur ko'rinish -->
<div class="rounded-lg bg-slate-100 p-4 inset-shadow-sm">Botiq panel</div>
Yana ikki dost β ring (tashqi halqa, soya o'rnida ko'pincha fokus uchun) va inset-ring (ichki halqa). Eng kuchli tomoni shundaki, ularning hammasini bir-birining ustiga qatlamlash mumkin β har biri alohida qatlam:
<!-- Tashqi soya + indigo halqa + ichki nozik soya β uchchalasi birga -->
<div class="rounded-xl bg-white p-6 shadow-lg ring-1 ring-slate-200 inset-shadow-sm">
Uch qatlamli effekt
</div>
π v4 dan eslatma. v3 da
ringstandart 3px ko'k halqa edi; v4 daringendi 1px (joriycurrentColorga yaqin) va rangniring-<rang>bilan alohida berasiz.inset-shadowvainset-ringesa v4 da yangi β ilgari buni faqat ixtiyoriy (arbitrary) qiymat bilan yozish kerak edi.
14.5 opacity β butun elementning shaffofligi¶
opacity-* β elementni butunlay (matni, foni, bolalari bilan) shaffof qiladi. Shkala 0 dan 100 gacha:
<div class="opacity-100">to'liq ko'rinadi</div>
<div class="opacity-50">yarim shaffof</div>
<div class="opacity-0">ko'rinmas (lekin joyni egallaydi)</div>
<!-- Ixtiyoriy qiymat -->
<div class="opacity-[0.67]">67%</div>
Eng tez-tez ishlatiladigan joyi β o'chirilgan (disabled) holat:
<button class="bg-indigo-500 text-white disabled:opacity-50 disabled:cursor-not-allowed">
Yuborish
</button>
π‘
opacity-50va rang/50o'rtasidagi muhim farq.opacity-50β butun elementni (matn, fon, ramka, bolalar β hammasini) yarim shaffof qiladi.bg-indigo-500/50esa faqat fon rangini yarim shaffof qiladi; matn va bolalar to'liq ko'rinaveradi. Karta foni biroz ko'rinib turishini istasangiz βbg-white/70ishlating,opacityemas; aks holda ichidagi matn ham xiralashadi. (Rang/NNmodifikatori ni 13-bobda batafsil ko'rgansiz.)
14.6 Filtrlar β rasm va elementni qayta ishlash¶
Filtrlar elementning piksellariga ta'sir qiladi: xiralashtirish, yorqinlik, ranglarni o'zgartirish. Eng ko'p ishlatiladiganlari:
| Klass | Ta'siri |
|---|---|
blur-sm / blur / blur-lg |
xiralashtirish (gauss blur) |
brightness-50 / brightness-125 |
qoraytirish / yorqinlashtirish |
contrast-* |
kontrast |
grayscale / grayscale-0 |
rangsiz / rangli |
sepia |
jigarrang nostalgik tus |
invert |
ranglarni teskari |
saturate-* |
rang to'yinganligi |
hue-rotate-* |
rang tusini aylantirish |
Bitta rasmga turli filtrlar shunday ko'rinadi:
Filtrlarni bir-biriga ulash mumkin va holat variantlari bilan birlashtirish ayniqsa kuchli. Klassik naqsh β galereya: rasmlar rangsiz turadi, sichqoncha kelganda rang qaytadi:
<!-- Rangsiz; hover'da rang qaytadi va biroz yorqinlashadi -->
<img src="..." class="grayscale brightness-90 transition
hover:grayscale-0 hover:brightness-100" />
drop-shadow va box-shadow farqi¶
Ikkalasi ham soya, lekin tabiati boshqa:
shadow-*(box-shadow) β elementning to'rtburchak kuti atrofiga soya tushiradi.drop-shadow-*(filter) β elementning haqiqiy shakli (alfa kanali) bo'ylab soya tushiradi.
Shuning uchun fonsiz PNG logo, ikonka yoki notog'ri shaklli (mas. uchburchak, gradient mask qilingan) element uchun drop-shadow-* kerak β soya shaklning konturini kuzatadi. To'rtburchak kartaga esa oddiy shadow-* yetarli (va u arzonroq):
<!-- Shaffof PNG logo: soya logoning konturini kuzatadi -->
<img src="logo.png" class="drop-shadow-lg" />
<!-- Oddiy to'rtburchak karta -->
<div class="rounded-xl bg-white p-6 shadow-md">...</div>
14.7 Backdrop filtrlar β muzlagan shisha (frosted glass)¶
Eng zo'r effektlardan biri. blur-* elementning o'zini xiralashtiradi; backdrop-blur-* esa elementning orqasidagi (foni) narsalarni xiralashtiradi. Element o'zi tiniq qoladi, lekin u orqali ko'rinayotgan fon muzlagan shishadagidek erib ketadi.
Bitta shart bor: effekt ko'rinishi uchun element foni yarim-shaffof bo'lishi kerak. To'liq oq fon (bg-white) orqasini ko'rsatmaydi β shuning uchun blur ham ko'rinmaydi. Sehrli juftlik:
<!-- Frosted glass: yarim-shaffof oq fon + orqani xiralashtirish -->
<header class="sticky top-0 bg-white/30 backdrop-blur-md
border-b border-white/20 px-6 py-3">
<nav>...</nav>
</header>
bg-white/30 β 30% oq (shisha o'zi). backdrop-blur-md β orqadagi kontent xira. Birga β sahifa skroll qilinganda kontent shisha header ostidan eriΠ± o'tadigan zamonaviy "glassmorphism" effekti. Mana shu ikkita klass qanday ishlashi:
Yana foydali backdrop variantlar: backdrop-brightness-* (orqa fonni qoraytirish/yorqinlashtirish β masalan modal ortidagi fonni xira qilish), backdrop-saturate-* (rang to'yinganligi).
β οΈ Ikkita tez-tez uchraydigan tuzoq. (1)
backdrop-blurni shaffof bo'lmagan fon (bg-white,bg-slate-900) bilan qo'ysangiz β hech narsa ko'rinmaydi, chunki orqa ko'rinmaydi. Doim/30,/50kabi yarim-shaffof fon bilan qo'shing. (2) Kattabackdrop-blurkeng maydonda sekin ishlashi mumkin (ayniqsa eski qurilmalarda) β uni butun ekranga emas, kerakli kichik panelga qo'llang.
14.8 Blend rejimlari β orqa bilan aralashtirish¶
Blend rejimlari element rangini orqasidagi narsa bilan qanday aralashtirishni belgilaydi (xuddi Photoshop qatlamlaridek):
mix-blend-*β butun elementni orqasidagi narsa bilan aralashtiradi:mix-blend-multiply(qoraytiradi),mix-blend-screen(yorqinlashtiradi),mix-blend-overlay.bg-blend-*β elementning fon rasmi bilan fon rangini o'zaro aralashtiradi.
Klassik qo'llanish β rasm ustidagi rangli qoplama (duotone / overlay):
<!-- Rasm ustida indigo qoplama, multiply bilan aralashadi -->
<div class="relative">
<img src="photo.jpg" class="rounded-xl" />
<div class="absolute inset-0 rounded-xl bg-indigo-600 mix-blend-multiply"></div>
</div>
mix-blend-multiply indigo qoplamani rasm bilan ko'paytiradi β natijada rasm indigo tusga botadi, ammo detallari saqlanadi. Bu hero bannerlarda matnni o'qiladigan qilish uchun ham qo'l keladi.
14.9 Mask β rasm chetini erish (v4.1 yangiligi)¶
Mask β elementning ba'zi qismlarini ko'rinmas qiladi, lekin "kesib tashlamasdan", silliq o'tish bilan. v4.1 da mask utility'lari to'plami keldi. Eng amaliy ikkitasi:
1) Chetni erish (edge fade). Rasmning pastki chetini fonga sekin "erib" ketishini istasangiz:
<!-- Pastki 90% dan boshlab asta-sekin shaffoflanadi -->
<img src="photo.jpg" class="mask-b-to-90%" />
<!-- Yuqori chet 50% dan erib boshlaydi -->
<img src="hero.jpg" class="mask-t-from-50%" />
mask-b-to-90% β pastdan (bottom) yuqoriga qarab, 90% nuqtaga yetganda to'liq shaffoflashadi; tepasi to'liq ko'rinadi. Bu rasm tagidagi matn bilan silliq qo'shilishni beradi β qattiq kesilgan chet emas.
2) Radial spotlight. mask-radial-* β markazda yorug', chetlarda erigan "projektor" effekti:
Murakkabroq shakl uchun esa rasmni mask sifatida berish mumkin: mask-[url(shape.svg)]. Buning ostida CSS mask-image turadi; mask-clip-*, mask-origin-*, mask-mode-* kabi sozlamalar ham bor.
14.10 Matn soyasi (v4.1 yangiligi)¶
Uzoq yillar Tailwind'da matn soyasi utility'si yo'q edi (ixtiyoriy qiymat bilan yozish kerak edi). v4.1 da text-shadow-* keldi:
<!-- O'lcham shkalasi -->
<p class="text-shadow-2xs">juda nozik</p>
<p class="text-shadow-sm">nozik</p>
<p class="text-shadow-md">o'rta</p>
<p class="text-shadow-lg">kuchli</p>
<!-- Rangli matn soyasi -->
<h2 class="text-shadow-lg text-shadow-blue-500/50">Rangli soya</h2>
Eng foydali joyi β rasm ustidagi matn. Hero rasmlarida och rangli sarlavha och fonga yo'qolib ketmasligi uchun qora soya o'qishni keskin yaxshilaydi:
<div class="relative">
<img src="hero.jpg" class="h-80 w-full object-cover" />
<h1 class="absolute bottom-6 left-6 text-4xl font-bold text-white
text-shadow-lg text-shadow-black/50">
Sarlavha rasm ustida
</h1>
</div>
14.11 Amaliy misol β ko'tarilgan profil kartasi¶
Endi o'rganganlarni birlashtiramiz. Asosiy holatda nozik soya, sichqoncha kelganda karta "ko'tariladi" (kattaroq soya) β bu real interfeyslarda eng tez-tez uchraydigan naqsh:
<article class="group rounded-2xl bg-white p-6
shadow-sm ring-1 ring-slate-200
transition hover:shadow-xl hover:ring-indigo-200">
<img src="avatar.png"
class="size-16 rounded-full drop-shadow-md
grayscale transition group-hover:grayscale-0" />
<h3 class="mt-4 text-lg font-semibold text-slate-800">Oqil Imomnazarov</h3>
<p class="text-sm text-slate-500">Frontend dasturchi</p>
</article>
Tahlil qilamiz:
shadow-sm ring-1 ring-slate-200β tinch holatda past balandlik + nozik ramka.transition hover:shadow-xl hover:ring-indigo-200β hover'da karta yuqoriga ko'tariladi (soya kattalashadi) va ramka indigoga aylanadi.transitiono'tishni silliq qiladi.drop-shadow-mdavatarda β yumaloq rasm konturini kuzatadigan soya (box-shadow emas).grayscale group-hover:grayscale-0β kartaga kursor kelsa, avatar rangli bo'ladi (grouporqali β buni 15-bobda batafsil ko'rasiz).
Bir nechta atomik effekt birga β natijada jonli, "his qilinadigan" komponent.
14.12 Tez-tez uchraydigan xatolar¶
- v3 soya nomlarini ishlatish. v4 da prefikssiz
shadowyo'q; eskishadowβshadow-sm, eskishadow-smβshadow-xs. Yangi kodda doim nomlangan o'lcham yozing. - Og'ir soyalardan haddan oshib ketish. Hamma kartaga
shadow-2xlqo'ysangiz β hech narsa "baland" ko'rinmaydi, sahifa kir bo'ladi. Balandlik nisbiy: faqat haqiqatan ko'tarilishi kerak bo'lgan element (modal, hover'dagi karta) katta soya olsin. backdrop-blurshaffof fonsiz. Yarim-shaffof fon (bg-white/30) bo'lmasa, backdrop blur ko'rinmaydi β eng ko'p uchraydigan "nega ishlamayapti" sababi.opacityni rang/50o'rniga ishlatish. Faqat fonni shaffof qilmoqchi bo'lsangizbg-white/70ishlating;opacity-70butun element bilan birga matnni ham xiralashtiradi.- Katta blur'ning narxi (performance). Keng maydonga katta
bluryokibackdrop-blurβ qimmat operatsiya; uni kerakli kichik joyga cheklang, butun ekranga emas. drop-shadowo'rnigashadow(yoki aksincha). Fonsiz PNG/ikonka βdrop-shadow-*; to'rtburchak quti βshadow-*.
π Oldinga qarash. Bu bobdagi effektlar β soya, ring, opacity β dark rejimda boshqacha sozlanadi: qora fonda kulrang soya ko'rinmaydi, shuning uchun
dark:da ko'pincha soyani ramka/ring bilan almashtirasiz yoki rangini o'zgartirasiz. Buni 16-bob β Dark mode da ko'ramiz. Hover'dagihover:shadow-xlo'tishini esa silliq qiluvchitransition17-bobning mavzusi.
Mashqlar¶
1-mashq. Internetdagi eski (v3) darsdan ko'chirgan kodda <div class="shadow"> bor, lekin v4 loyihangizda bu karta tekis chiqyapti. Nima bo'lgan va qanday tuzatasiz?
Yechim
v4 da soya shkalasi nomlari siljigan β prefikssiz shadow endi mavjud emas. v3 dagi shadow v4 da shadow-sm ga to'g'ri keladi:
(Va v3 dagi shadow-sm esa v4 da shadow-xs bo'ladi.) Umumiy qoida: v3 dan kelgan kodda soyalarni bir pog'ona "kattaroq nom"ga ko'taring va doim nomlangan o'lchamni yozing.
2-mashq. Bir tugma yarim shaffof bo'lishi kerak β uning foni ham, matni ham 60% ko'rinishda. Yana boshqa karta esa faqat foni 60% shaffof, matni esa to'liq ko'rinishi kerak. Ikkalasi uchun klasslarni yozing va farqini tushuntiring.
Yechim
<!-- Hamma narsa (fon + matn) 60% β opacity -->
<button class="bg-indigo-500 text-white opacity-60">Butun element xira</button>
<!-- Faqat fon 60%, matn to'liq β rang /NN -->
<div class="bg-indigo-500/60 text-white">Faqat fon xira</div>
opacity-60 butun elementni (bolalari, matni bilan) shaffof qiladi. bg-indigo-500/60 esa faqat fon rangini shaffof qiladi β matn to'liq qoraygan/oq bo'lib qolaveradi. Karta foni biroz ko'rinishini istasangiz, deyarli har doim rang /NN to'g'ri tanlov.
3-mashq. Skroll qilinganda tepada qotib turadigan (sticky) "muzlagan shisha" header yasang: orqasidagi kontent xira ko'rinsin. Klasslarni yozing va bg-white bilan qilsa nega ishlamasligini ayting.
Yechim
<header class="sticky top-0 bg-white/30 backdrop-blur-md border-b border-white/20 px-6 py-3">
...
</header>
sticky top-0 β tepaga yopishadi. backdrop-blur-md β orqadagi kontentni xiralashtiradi. Lekin bg-white (to'liq oq) bilan qilsangiz, fon butunlay oq bo'lib, orqasini umuman ko'rsatmaydi β demak blur ham ko'rinmaydi. Shuning uchun yarim-shaffof bg-white/30 shart: shisha o'zi biroz oq, lekin orqasi ham ko'rinib turadi va aynan shu ko'rinayotgan qismni blur xiralashtiradi.
4-mashq. Rasm galereyasida har bir rasm avval rangsiz tursin, sichqoncha kelganda rangli bo'lib jonlansin. Bir <img> uchun klasslarni yozing.
Yechim
grayscale β asosiy (tinch) holat: rangsiz. hover:grayscale-0 β sichqoncha kelganda filtr olib tashlanadi, rang qaytadi. transition β bu o'zgarishni silliq (sakramasdan) qiladi. Xohlasangiz hover:scale-105 yoki hover:brightness-110 qo'shib jonliroq qilishingiz mumkin.
5-mashq. Hero bo'limida katta rasm ustida oq sarlavha bor, lekin rasmning och joylarida matn yo'qolib ketyapti. Ikki xil yo'l bilan o'qishni yaxshilang: (a) matnga soya berib, (b) rasm ustiga qoraytiruvchi qatlam qo'yib.
Yechim
(a) Matn soyasi (v4.1):
text-shadow-black/50 oq matn ostiga yarim-shaffof qora soya qo'yadi β och fonda ham kontur ajralib turadi.
(b) Qoraytiruvchi qoplama:
<div class="relative">
<img src="hero.jpg" class="h-80 w-full object-cover" />
<div class="absolute inset-0 bg-black/40"></div>
<h1 class="absolute bottom-6 left-6 text-white">Sarlavha</h1>
</div>
bg-black/40 qatlami butun rasmni biroz qoraytiradi, oq matn esa undan ajralib chiqadi. Ko'pincha ikkalasini birga ham ishlatishadi.
6-mashq (drop-shadow vs shadow). Sizda ikki element bor: (1) fonsiz PNG kompaniya logosi, (2) oddiy to'rtburchak oq karta. Har biriga soyani qaysi utility bilan berasiz va nega?
Yechim
<!-- (1) Fonsiz PNG logo: drop-shadow β soya logo SHAKLINI kuzatadi -->
<img src="logo.png" class="drop-shadow-lg" />
<!-- (2) To'rtburchak karta: shadow β quti atrofiga soya yetarli -->
<div class="rounded-xl bg-white p-6 shadow-md">...</div>
drop-shadow-* filter bo'lib, elementning alfa kanali (haqiqiy shakli) bo'ylab soya tushiradi β shuning uchun fonsiz PNG yoki notog'ri shakl uchun ideal. shadow-* (box-shadow) esa har doim to'rtburchak quti atrofiga tushadi va to'rtburchak kartaga aynan mos hamda hisoblash jihatidan arzonroq. Logoga shadow-* qo'ysangiz β soya logo atrofidagi ko'rinmas to'rtburchakka tushadi, g'alati ko'rinadi.
β¬ οΈ Oldingi: 13 β Fon, gradient va chegara Β· π README Β· Keyingi: 15 β Holat variantlari β‘οΈ