Cell er et bibliotek, som jeg har udviklet til at hjælpe med styling af brugergrænsefladekomponenter ved hjælp af Sass. Denne artikel vil være en kort introduktion til et par koncepter, der (hvis du er bekendt med Sass) bør føles bekendt. Disse koncepter kaldes Cell Atoms og Cell Molecules.
Et Cell Atom er en enkelt CSS-egenskab, der udsender to forskellige værdier, der vil blive anvendt på et element baseret på en eller anden overdraget kontekst. I dette tilfælde kan konteksten betyde ting som tilstedeværelsen af visse modifikatorer/pseudotilstande, eller om elementet/et overordnet element er svævet eller ej osv. Dette er især nyttigt, når man skifter egenskaber baseret på en begivenhed eller interaktion.
Et eksempel kunne være at bruge display
-egenskaben til at skjule/vise et element. Om værdien af display
-egenskaben er none
eller noget i retning af block
afhænger af den pågældende kontekst eller tilstand. I almindelig Sass kunne det se ud som:
… hvilket ville vise elementet, når det har klassen active
. Hvis vi i stedet ville vise elementet, når en bestemt forælder havde active
-klassen, kunne det se ud som:
Et Cell Molecule er i bund og grund bare en almindelig Sass Mixin, der udsender en eller flere CSS-regler baseret på en overført kontekst/betingelse for at opnå et enkelt specifikt resultat. Målet er at abstrahere tilbagevendende mønstre til sammensætelige Mixins, hvilket forbedrer klarheden og vedligeholdbarheden af din Sass-kodebase. Der overføres ingen CSS-egenskaber eller -værdier, når man bruger (kalder) Cell Molecules, i modsætning til Cell Atoms.
Dette ligner i princippet Bourbon Sass-biblioteket (forskellen er, at et Cell Molecule tager et kontekstinput og vil output flere kontekstdrevne regler). Hvis vi tager det tidligere hide
/show
eksempel, kunne dette abstraheres til et Cell Molecule og bruges på følgende måde:
…i bund og grund fortælle Cell “Skjul dette element, medmindre den overgivne betingelse er opfyldt, i hvilket tilfælde det skal vises”. Den nødvendige funktionalitet (dvs. anvendelse af none
– eller block
-værdier) ville blive håndteret under motorhjelmen af den hypotetiske show
-mixin. Ovenstående ville være syntaktisk sukker for:
… svarende (i princippet) til dette tidligere vanilla Sass-eksempel, som vi så:
Der er ingen rigtig hård måde at kvalificere et CSS-sæt som et Cell Molecule på; det kan være ethvert abstrakt og tilbagevendende mønster, der kræver en standardtilstand, som ændrer sig baseret på en eller anden kontekst.
Cellemolekyler er blot en filosofi/et begreb; der er i øjeblikket ikke noget Cell Molecules-bibliotek eller noget
Konklusion
Mens Cell Atoms og Molecules tjener forskellige formål, er det ultimative mål for begge at holde stilarter mere sammensætningsvenlige. Ved at bruge Cell og identificere Atoms og Molecules i din kodebase (eller forudsige/forudse dem, hvis du opretter et nyt projekt/en ny funktion) kan du sikre, at din kodebase er mere kortfattet og semantisk og mindre gennemsyret af forskellige CSS-egenskaber, som uden tvivl vil blive sat på uden nogen reel rækkefølge.
Ved at se på de forskellige eksempler fra denne artikel side om side kan vi få en bedre forståelse af motiverne bag disse koncepter (husk at alle disse eksempler opnår det samme):
I mange tilfælde vil du skulle overveje, om der er behov for at oprette et Molecule til noget – i ovenstående eksempel, hvor Molecule kun påvirker en enkelt CSS-egenskab, er det måske mere pragmatisk at holde sig til at bruge display
Atom.