Täiustage oma Tailwind CSS oskusi, omandades modifikaatorite kombineerimise. Õppige kombineerima reageerivaid, oleku- ja grupimodifikaatoreid, et hõlpsalt luua keerukaid ja dünaamilisi kasutajaliideseid.
Tailwindi võimsuse avamine: Modifikaatorite kombineerimise kunst keerukate utiliidikombinatsioonide jaoks
Tailwind CSS on põhjalikult muutnud seda, kuidas paljud arendajad veebi stiilile lähenevad. Selle utiliidipõhine filosoofia võimaldab kiiret prototüüpimist ja kohandatud disainide loomist, ilma et peaksite kunagi oma HTML-ist lahkuma. Kuigi üksikute utiliitide, nagu p-4
või text-blue-500
, rakendamine on lihtne, avaneb Tailwindi tõeline jõud siis, kui hakkate looma keerulisi, olekupõhiseid ja reageerivaid kasutajaliideseid. Selle saladus peitub võimsas, kuid lihtsas kontseptsioonis: modifikaatorite kombineerimine.
Paljud arendajad tunnevad end mugavalt üksikute modifikaatoritega, nagu hover:bg-blue-500
või md:grid-cols-3
. Aga mis juhtub, kui teil on vaja stiili rakendada ainult hõljumisel, suurel ekraanil ja kui tume režiim on lubatud? Siin tuleb mängu modifikaatorite kombineerimine. See on tehnika, kus mitu modifikaatorit aheldatakse kokku, et luua ülitäpsed stiilireeglid, mis reageerivad tingimuste kombinatsioonile.
See põhjalik juhend viib teid sügavale modifikaatorite kombineerimise maailma. Alustame põhitõdedest ja liigume järk-järgult edasi keerukate kombinatsioonideni, mis hõlmavad olekuid, murdepunkte, `group`, `peer` ja isegi suvalisi variante. Lõpuks olete valmis ehitama praktiliselt mis tahes UI komponenti, mida võite ette kujutada, kasutades Tailwind CSS-i deklaratiivset elegantsi.
Vundament: Üksikute modifikaatorite mõistmine
Enne kui saame kombineerida, peame mõistma ehitusplokke. Tailwindis on modifikaator utiliidiklassile lisatud eesliide, mis määrab, millal seda utiliiti tuleks rakendada. Need on sisuliselt CSS pseudo-klasside, meediapäringute ja muude tingimuslike reeglite utiliidipõhine rakendus.
Modifikaatoreid saab laias laastus kategoriseerida:
- Oleku modifikaatorid: Need rakendavad stiile, mis põhinevad elemendi praegusel olekul, näiteks kasutaja interaktsioonil. Levinud näited on
hover:
,focus:
,active:
,disabled:
javisited:
. - Reageerivad murdepunktide modifikaatorid: Need rakendavad stiile konkreetsel ekraanisuurusel ja sellest suurematel, järgides mobiilseadmetele keskenduvat lähenemisviisi. Vaikimisi on
sm:
,md:
,lg:
,xl:
ja2xl:
. - Süsteemieelistuste modifikaatorid: Need reageerivad kasutaja operatsioonisüsteemi või brauseri seadetele. Kõige silmapaistvam on
dark:
tume režiimi jaoks, kuid ka teised, nagumotion-reduce:
japrint:
, on samuti uskumatult kasulikud. - Pseudo-klassi ja pseudo-elemendi modifikaatorid: Need on suunatud elemendi spetsiifilistele struktuurilistele omadustele või osadele, nagu
first:
,last:
,odd:
,even:
,before:
,after:
japlaceholder:
.
Näiteks võib lihtne nupp kasutada oleku modifikaatorit nagu see:
<button class="bg-sky-500 hover:bg-sky-600 ...">Klõpsa mind</button>
Siin rakendab hover:bg-sky-600
tumedamat taustavärvi ainult siis, kui kasutaja kursor on nupu kohal. See on põhiline kontseptsioon, millele me ehitame.
Kombineerimise võlu: Modifikaatorite kombineerimine dünaamiliste kasutajaliideste jaoks
Modifikaatorite kombineerimine on nende eesliidete kokku aheldamine, et luua spetsiifilisem tingimus. Süntaks on lihtne ja intuitiivne: te lihtsalt asetate need üksteise järel, eraldatuna koolonitega.
Süntaks: modifikaator1:modifikaator2:utiliidi-klass
Järjekord on oluline. Tailwind rakendab modifikaatoreid vasakult paremale. Näiteks klass md:hover:text-red-500
tõlgitakse umbes järgmiseks CSS-iks:
@media (min-width: 768px) {
.md\:hover\:text-red-500:hover {
color: red;
}
}
See reegel tähendab: "Keskmisel murdepunktil ja sellest ülespoole, kui see element on hõljutatud, muutke selle teksti värvus punaseks." Uurime mõningaid praktilisi, reaalseid näiteid.
Näide 1: Murdepunktide ja olekute kombineerimine
Levinud nõue on, et interaktiivsed elemendid käituksid puutetundlikes seadmetes teistmoodi kui kursoripõhistes seadmetes. Me saame seda ligikaudselt hinnata, muutes hõljumisefekte erinevatel murdepunktidel.
Mõelge kaardikomponendile, mis töölaual hõljumisel õrnalt tõuseb, kuid millel puudub hõljumisefekt mobiilis, et vältida kleepuvaid hõljumisolukordi puudutamisel.
<div class="... transition-transform duration-300 md:hover:scale-105 md:hover:-translate-y-1">...</div>
Jaotus:
transition-transform duration-300
: See seab sujuva ülemineku mis tahes teisendusmuudatustele.md:hover:scale-105
: Keskmisel murdepunktil (768px) ja sellest ülespoole, kui kaart on hõljutatud, suurendage seda 5%.md:hover:-translate-y-1
: Keskmisel murdepunktil ja sellest ülespoole, kui kaart on hõljutatud, liigutage seda veidi ülespoole.
Ekraanidel, mis on väiksemad kui 768 pikslit, takistab modifikaator md:
hõljumisefektide rakendamist, pakkudes mobiilikasutajatele paremat kogemust.
Näide 2: Tume režiimi kihistamine interaktiivsusega
Tume režiim ei ole enam nišifunktsioon; see on kasutaja ootus. Kombineerimine võimaldab teil määratleda interaktsioonistiile, mis on spetsiifilised igale värviskeemile.
Stiilime linki, millel on erinevad värvid vaikimisi ja hõljumise olekute jaoks nii heledas kui ka tumedas režiimis.
<a href="#" class="text-blue-600 underline hover:text-blue-800 dark:text-cyan-400 dark:hover:text-cyan-200">Loe rohkem</a>
Jaotus:
text-blue-600 hover:text-blue-800
: Heledas režiimis (vaikimisi) on tekst sinine ja muutub hõljumisel tumedamaks.dark:text-cyan-400
: Kui tume režiim on aktiivne, muutub vaiketeksti värv helesiniseks.dark:hover:text-cyan-200
: Kui tume režiim on aktiivne ja link on hõljutatud, muutub tekst veelgi heledamaks siniseks.
See näitab, kuidas saate luua täieliku teemateadlike stiilide komplekti elemendile ühel real.
Näide 3: Trifekta - Reageerivate, tume režiimi ja oleku modifikaatorite kombineerimine
Nüüd kombineerime kõik kolm kontseptsiooni üheks võimsaks reegliks. Kujutage ette sisestusvälja, mis peab signaalima, et see on fookuses. Visuaalne tagasiside peaks olema erinev töölaual ja mobiilis ning see peab kohanema tumeda režiimiga.
<input type="text" class="border-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500 md:dark:focus:ring-yellow-400" />
Keskendume siin kõige keerukamale klassile: md:dark:focus:ring-yellow-400
.
Jaotus:
md:
: See reegel kehtib ainult keskmisel murdepunktil (768px) ja laiemal.dark:
: Selles murdepunktis kehtib see ainult siis, kui kasutajal on tume režiim lubatud.focus:
: Selles murdepunktis ja värvirežiimis kehtib see ainult siis, kui sisestuselemendil on fookus.ring-yellow-400
: Kui kõik kolm tingimust on täidetud, rakendage kollane fookusring.
See üks utiliidiklass annab meile uskumatult spetsiifilise käitumise: "Suurtel ekraanidel, tumedas režiimis, tõstke see fookuses olev sisestus esile kollase ringiga." Samal ajal toimib lihtsam focus:ring-blue-500
vaikefookusstiilina kõigi teiste stsenaariumide jaoks (mobiili hele/tume režiim ja töölaua hele režiim).
Põhitõdedest kaugemale: Täiustatud kombineerimine `group` ja `peer` abil
Kombineerimine muutub veelgi võimsamaks, kui tutvustate modifikaatoreid, mis loovad elementide vahel suhteid. Modifikaatorid group
ja peer
võimaldavad teil stiilida elementi vastavalt vastavalt vanema või õe-venna olekule.
Koordineeritud efektid `group-*` abil
Modifikaator `group` sobib suurepäraselt, kui interaktsioon vanemele elemendiga peaks mõjutama ühte või mitut selle last. Lisades vanemale klassi group
, saate seejärel kasutada mis tahes lapselemendil klassi `group-hover:`, `group-focus:` jne.
Loome kaardi, kus kaardi mis tahes osa hõljutamine muudab selle pealkirja värvi ja nooleikoon liigub. See peab olema ka tume režiim teadlik.
<a href="#" class="group block p-6 bg-white dark:bg-slate-800 rounded-lg shadow-md">
<h3 class="text-slate-900 group-hover:text-blue-600 dark:text-white dark:group-hover:text-blue-400">Kaardi pealkiri</h3>
<p class="text-slate-500 dark:text-slate-400">Kaardi sisu läheb siia.</p>
<span class="inline-block transition-transform group-hover:translate-x-1 motion-reduce:transform-none">→</span>
</a>
Kombineeritud modifikaatori jaotus:
dark:group-hover:text-blue-400
elemendilh3
: Kui tume režiim on aktiivne ja vanem `group` on hõljutatud, muutke pealkirja teksti värvi. See alistab vaiketume režiimi värvi, kuid ei mõjuta heleda režiimi hõljutusstiili.group-hover:translate-x-1
elemendil `span`: Kui vanem `group` on hõljutatud (mis tahes režiimis), liigutage nooleikooni paremale.
Dünaamilised õe-venna interaktsioonid `peer-*` abil
Modifikaator `peer` on mõeldud õe-venna elementide stiilimiseks. Kui märgite elemendi klassiga `peer`, saate seejärel kasutada modifikaatoreid nagu `peer-focus:`, `peer-invalid:` või `peer-checked:` *järgmisel* õe-venna elemendil, et stiilida seda vastavalt peeri olekule.
Klassikaline kasutusjuht on vormi sisestus ja selle silt. Me tahame, et silt muudaks värvi, kui sisestus on fookuses, ja me tahame ka, et ilmuks veateade, kui sisestus on vale. See peab toimima kõigis murdepunktides ja värviskeemides.
<div>
<label for="email" class="text-sm font-medium text-gray-700 dark:text-gray-300 peer-focus:text-violet-600 dark:peer-focus:text-violet-400">E-post</label>
<input type="email" id="email" class="peer mt-1 block w-full border-gray-300 invalid:border-red-500 focus:border-violet-500 ..." required />
<p class="mt-2 invisible text-sm text-red-600 peer-invalid:visible">Palun sisestage kehtiv e-posti aadress.</p>
</div>
Kombineeritud modifikaatori jaotus:
dark:peer-focus:text-violet-400
elemendillabel
: Kui tume režiim on aktiivne ja õe-venna `peer` sisestus on fookuses, muutke sildi värvi lillaks. See töötab koos standardse `peer-focus:text-violet-600` heleda režiimi jaoks.peer-invalid:visible
veateatel `p`: Kui õe-venna `peer` sisestusel on `invalid` olek (nt tühi nõutav väli), muutke selle nähtavus `invisible` olekust `visible` olekusse. See on suurepärane näide vormi valideerimise stiilimisest ilma JavaScriptita.
Viimane piir: Kombineerimine suvaliste variantidega
Mõnikord peate stiili rakendama tingimuse alusel, mille jaoks Tailwind ei paku kohe valmis modifikaatorit. Siin tulevad mängu suvalised variandid. Need võimaldavad teil kirjutada kohandatud selektori otse oma klassinimesse ja jah, neid saab kombineerida!
Süntaks kasutab nurksulgusid: `[&_selector]:utility`.
Näide 1: Konkreetsete laste sihtimine hõljumisel
Kujutage ette, et teil on konteiner ja te soovite, et kõik selle sees olevad sildid `` muutuksid roheliseks, kui konteinerit hõljutatakse, kuid ainult suurtel ekraanidel.
See on lõik, millel on oluline tekst, mis muudab värvi. See on teine lõik teise paksus kirjas osaga.<div class="p-4 border lg:hover:[&_strong]:text-green-500">
Jaotus:
Klass lg:hover:[&_strong]:text-green-500
kombineerib reageeriva modifikaatori (lg:
), oleku modifikaatori (hover:
) ja suvalise variandi ([&_strong]:
), et luua väga spetsiifiline reegel: "Suurtel ekraanidel ja sellest ülespoole, kui see div on hõljutatud, leidke kõik järglased `` elemendid ja muutke nende tekst roheliseks."
Näide 2: Kombineerimine atribuutide selektoritega
See tehnika on uskumatult kasulik integreerimiseks JavaScripti raamistikega, kus võite kasutada `data-*` atribuute oleku haldamiseks (nt akordionide, vahekaartide või rippmenüüde jaoks).
Stiilime akordioni elemendi sisuala nii, et see oleks vaikimisi peidetud, kuid nähtav, kui selle vanemal on `data-state="open"`. Me tahame ka, et tumedas režiimis oleks see avatud olekus erinev taustavärv.
<div data-state="closed" class="border rounded">
<h3>... Akordioni käivitaja ...</h3>
<div class="overflow-hidden h-0 [data-state=open]:h-auto dark:[data-state=open]:bg-gray-800">
Akordioni sisu...
</div>
</div>
Teie JavaScript lülitaks vanema atribuudi `data-state` väärtuse `open` ja `closed` vahel.
Kombineeritud modifikaatori jaotus:
Klass dark:[data-state=open]:bg-gray-800
sisuelemendil `div` on suurepärane näide. See ütleb: "Kui tume režiim on aktiivne ja elemendil on atribuut `data-state="open"`, rakendage tumeda halli taust. See on kombineeritud baasreegliga `[data-state=open]:h-auto`, mis juhib selle nähtavust kõigis režiimides.
Parimad tavad ja jõudluse kaalutlused
Kuigi modifikaatorite kombineerimine on võimas, on oluline seda kasutada targalt, et säilitada puhas ja hallatav koodibaas.
- Säilitage loetavus: Pikad utiliidiklasside stringid võivad muutuda raskesti loetavaks. Automaatse klasside sorteerija, nagu ametlik Tailwind CSS Prettieri plugin, on väga soovitatav. See standardiseerib klasside järjekorda, muutes keerukad kombinatsioonid palju lihtsamini skaneeritavaks.
- Komponendi abstraktsioon: Kui leiate end korduvalt samade keerukate modifikaatorite kombinatsioonidega paljudel elementidel, on see tugev signaal selle mustri abstraheerimiseks korduvkasutatavaks komponendiks (nt Reacti või Vue komponent, Blade komponent Laravelis või lihtne osaline).
- Võtke omaks JIT mootor: Varem võis paljude variantide lubamine põhjustada suuri CSS-failide suurusi. Tailwindi Just-In-Time (JIT) mootoriga pole see probleem. JIT mootor skannib teie faile ja genereerib ainult täpselt vajaliku CSS-i, sealhulgas iga keeruka modifikaatorite kombinatsiooni. Jõudlusmõju teie lõppversioonile on tühine, nii et saate kombineerida enesekindlalt.
- Mõistke spetsiifilisust ja järjekorda: Klasside järjekord teie HTML-is ei mõjuta üldiselt spetsiifilisust samamoodi nagu traditsioonilises CSS-is. Kui aga kaks utiliiti samas murdepunktis ja olekus üritavad juhtida sama atribuuti (nt `md:text-left md:text-right`), siis võidab see, mis ilmub stringis viimasena. Prettieri plugin käsitleb seda loogikat teie jaoks.
Järeldus: Ehitage kõike, mida suudate ette kujutada
Tailwind CSS modifikaatorite kombineerimine ei ole lihtsalt funktsioon; see on peamine mehhanism, mis tõstab Tailwindi lihtsast utiliiditeegist kõikehõlmavaks UI disaini raamistikuks. Omandades reageerivate, oleku-, teema-, grupi-, peeri- ja isegi suvaliste variantide kombineerimise kunsti, vabanete valmis komponentide piirangutest ja saate jõudu luua tõeliselt eritellimusel, dünaamilisi ja reageerivaid liideseid.
Peamine õppetund on see, et te ei ole enam piiratud ühe tingimuse stiilidega. Nüüd saate deklaratiivselt määratleda, kuidas element peaks välja nägema ja käituma täpses asjaolude kombinatsioonis. Olgu see siis lihtne nupp, mis kohandub tumeda režiimiga, või keeruline olekuteadlik vormikomponent, modifikaatorite kombineerimine pakub teile tööriistu, mida vajate selle elegantselt ja tõhusalt ehitamiseks, ilma et peaksite kunagi oma märgistusest lahkuma.