tillbaka till startsidan

29. Sassy CSS-in-JS-modules

Lyssna på Spotify lyssna! Lyssna på iTunes

Vi pratar om olika sätt att skriva CSS. Allt från en gammal klassisk index.css till BEM till preprocessors till CSS-in-JS och CSS modules. Mycket om att undvika “kaskaden”, specificitet och att namnge saker. Vi diskuterar att det fortfarande är viktigt att skriva CSS “som det egentligen ser ut” för att inte abstrahera för långt även om en skriver CSS i JS. Dessutom en del om filstruktur, separation of concerns och att skriva kod utan sina verktyg.

Om du gillar podden blir vi väldigt glada för en liten recension i iTunes eller en prenumeration på Spotify. Följ oss och säg hej på @asdfpodden på Instagram eller Twitter (Anton, Therése) <3

Länkar

Avsnittets skämt:

Vad dricker webbutvecklare helst när de är på event?
Nått som bubblar.
Skrapa här!!
Transkribering
Transkriberingen är gjord av nån "AI-grej". Du kan förbättra den genom att klicka precis här :)
00:00:00
Vad dricker Frontend-utvecklare när de är på event?
00:00:07
Hmm, vi har ju haft favoritet tidigare, men på events just?
00:00:14
Ja, det är något med ström, kanske, jag vet inte.
00:00:18
Något som bubblar?
00:00:20
Ja, okej.
00:00:24
Jag började tänka alldeles för inte webbutvecklare. Jag började tänka på eventbuss och massa grejer.
00:00:31
Ja, men eventbubbla är ju.
00:00:34
Ja, det var bra. Klassisk nivå så att säga.
00:00:40
Jag vet inte hur jag ska ta det där. Jag får bara ta det och gå vidare. Välkomna till ASDF allihopa.
00:00:51
Ja, allihopa. Du som lyssnar.
00:00:55
Idag tänkte vi att vi skulle snacka lite CSS, men kanske inte bara plain CSS.
00:01:03
Vi pratade lite CSS tidigare. Men typ alla olika sätt man kan skriva CSS.
00:01:09
För det finns ju idag ganska många olika sätt. Och många sätt är ju liksom
00:01:15
försöka att fixa de problem folk tycker att CSS har.
00:01:20
- Ja, för det är ju, på något sätt så går vi mer och mer mot att sluta behandla CSS som CSS och mer som, ja, script, eller vad man ska kalla det.
00:01:35
Man jobbar ganska hårt från att frångå hela Cascading-grejen som är Cascading-style.
00:01:45
Vad är det sista?
00:01:47
- Shits.
00:01:49
- Just det. På något sätt.
00:01:51
- Ja, exakt. Det känns väldigt mycket som att vi går från CSS till bara SS.
00:01:55
Man vill bara ha style-shits. Man vill inte ha hela Cascading-grejen.
00:02:01
Det är väl det största problemet. Men sen också det här med specificiteten som är en del av Cascadian.
00:02:10
För att kunna bestämma vilken regel som applicerar just här.
00:02:15
Ja, det är intressant. Det är "important" överallt.
00:02:24
Ja, men exakt.
00:02:25
Men jag tänker liksom att det känns som att det har tagit en jävla resa.
00:02:28
För att när jag började i alla fall, då skrev jag ändå CSS i bara...
00:02:35
Det var en index.css-fil, så stoppade man in allting man hade där.
00:02:39
Och det var liksom... Ah, det funkar fint.
00:02:42
Då var det inte i någon typ av professionell kontext, vilket kanske påverkar.
00:02:47
Men ändå så var det så.
00:02:50
Första sättet man lärde sig CSS var att skriva CSS helt plain.
00:02:55
Efter det kom man in på lite mer preprocessors, i stil med less eller sass.
00:03:02
Eller sassy CSS.
00:03:04
Det var som en uppenbarelse för mig.
00:03:11
Äntligen slipper jag skriva nästla saker.
00:03:16
Bara det gjorde det så jäkla värt att köra det.
00:03:19
Men jag vet inte, hade du samma väg, har du också kört både LESS och SAS eller SASI eller vad fan det heter?
00:03:28
Inte SASI men jag har kört både LESS och SAS.
00:03:34
Det är precis som du säger, när man ens tänker på det, nu kan jag nästan ha problem om man ska slänga ihop något litet.
00:03:42
Då kan jag nästan fastna i att så här, jaha just det, CSS utan en preprocessor, då får jag inte nästla saker.
00:03:50
Det känns så främmande för mig nu, för att det har jag på något sätt alltid gjort sedan jag började jobba som utvecklare.
00:03:58
Men jag kommer också ihåg, för även om man då fick nästla saker så hade man ju fortfarande det här problemet med att det kunde påverka över hela projektet.
00:04:07
för att just Cascader och vad är mest specifikt och sådana bitar.
00:04:13
Jag kommer på något sätt ihåg när BEM revolutionerade.
00:04:18
Jag har aldrig kört BEM egentligen, för jag tyckte att det där kan man väl lösa ändå.
00:04:27
Det gjorde man inte, men jag vet ungefär vad det är.
00:04:33
Jag tror att det står för Block Element Module, eller något i den stilen.
00:04:37
Eller Block Element Modifier.
00:04:43
Just det, för det var ju hur man döpte grejer bara va?
00:04:47
Ja, precis. För då hade du vilket block du var i, alltså en block på sidan.
00:04:54
Vilket element specifikt var du satt klassnamnet på.
00:04:57
Modifieren röd, eller kanske inte röd, kanske "error" eller "approved".
00:05:05
Alltså det var den som satte den här sista, allt annat var likadant men det var något som stack ut som skulle modifieras.
00:05:11
Ungefär så var det länge sedan.
00:05:15
Ja, just det. Jag tror att jag har lite i projektet nu, lite lämningar som är att det är uppdrag efter BEM-syntax.
00:05:24
Men visst, fanns det någon tooling runt BEM också? Eller var det bara "Okej, vi ska döpa saker så här"?
00:05:30
Jag är inte helt hundra... Jag är inte säker på att det var så mycket tooling, men jag tror det fanns principer som man skulle följa.
00:05:41
Vad är ett block? Vad är ett element? Vad är en modifier? Sen vad är den här du ska ha?
00:05:46
Vad var det mellan block och element? Vad är underscore? Och sen modifieren, vad är dubbeldash?
00:05:52
Så det fanns ju konventioner att följa.
00:05:55
Men jag vill inte minnas att jag suttit med specifika verktyg.
00:06:00
Men det är ju mycket möjligt att det fanns.
00:06:03
Eller finns.
00:06:05
Ja, precis. Därför har jag också fått för mig att det bara var en namnstandard i stort sett.
00:06:13
Ja, jag tror också det.
00:06:16
Jag kommer ihåg att jag haft jättemånga diskussioner.
00:06:19
"Vad är egentligen en modifier? Och vad är blocket? Vad går gränsen på blocket?"
00:06:23
Alltså så här timmar som har försvunnit in i det hålet.
00:06:26
Ja, för det är ju ett av de kanske äldsta stående skämten inom utveckling att namngivning är väl det svåraste man kan göra.
00:06:34
Ja, det är ju inte fel.
00:06:37
Nej, jag håller med. Det är ju extremt svårt faktiskt.
00:06:40
Jag har också skrivit mycket less och sass.
00:06:48
Det tycker jag är lite svårt.
00:06:50
Det fanns ju både sass och sass i CSS.
00:06:54
Det var någon variant på sass.
00:06:56
Nu kommer jag inte ihåg vilken.
00:06:58
Men den ena var ju typ som vi tänker att sass är idag.
00:07:03
Det är typ nestling och lite mer socker ovanpå.
00:07:06
Den andra var att du tog bort måsvingar och fan vet allt.
00:07:11
Oj, det har jag inte stött på.
00:07:15
Den följde väl bort lite grann för den skrevs kod som var så olik CSS.
00:07:23
Och lite liknande grejer, det fanns också något som heter Pag HTML.
00:07:30
Då skrev du typ HTML, fast utan krokodilmunnarna eller taggarna.
00:07:39
Om du skulle skriva ut en div som hade en klass, då skrev du bara div.klassnamn.
00:07:51
Och då processade den där så att den blev en div.
00:07:55
Och sen var det typ nestlingen, eller inte nestlingen, men typ indenteringen
00:08:00
som avgjorde vad som var nestlat inom varandra.
00:08:04
Oj, okej. Ja, det känns inte superläsbart, eller?
00:08:09
Nej, det blev ju mycket mindre text att läsa.
00:08:15
Jag vet att jag byggde liksom någon gammal Spotify-quiz-app för länge sedan i Vue.
00:08:20
Då körde jag Pug.
00:08:22
Och då var det ganska nice ändå. Men det var också för att du kunde köra dem i Vues-template.
00:08:28
Det blev ganska läsbart och då körde jag ändå Vues och då var det liksom "Varför inte lägga på ett till lager?"
00:08:32
Och det var också lite innan jag kände att man kanske ska försöka abstrahera inte allt för mycket.
00:08:39
Innan man lärde sig det så att säga.
00:08:46
Jag tror att någon av de här SAS-varianterna, eller om det var SAS i CSS, eller om det är den som lever kvar, var typ så.
00:08:53
Men det var också en grej som jag kände att "Nä, det här känns inte helt hundra".
00:08:59
Nej, det där har nog verkligen inte stött på.
00:09:03
Det låter tilltalade, men inte när du pratar om det här, kan jag ändå känna.
00:09:12
Nej, jag tror att de idéerna är ganska döda eller omoderna.
00:09:17
Men det vi pratade om sen var att namngivning är så svårt.
00:09:23
Och något som hyfsat löser det, i alla fall för CSS,
00:09:29
var när det kom CSS in JS, alltså CSS i javaskript.
00:09:32
För de som inte har kört det så mycket innan,
00:09:40
Du skriver din CSS som skriptobjekt på ett sätt.
00:09:45
Antingen kan du skriva att du har en styled component, som är den vanligaste.
00:09:51
Då har du en styled objekt som du importerar.
00:09:55
Sen skriver du "styled.div".
00:09:57
Då är div en funktion.
00:10:01
Sen skickar du in ett objekt till den, där objektet är din styling.
00:10:08
Och sen spottar den ur sig en komponent som du kan använda som får den här stylingen applicerad.
00:10:13
Då har den genererat upp ett klassnamn och allting åt dig som är då scopat till just den komponenten.
00:10:19
Så den stylingen kommer aldrig kunna appliceras någon annanstans.
00:10:22
Och det var ganska länge sedan det kom nu.
00:10:27
Det blev populärt för att i React så kan man skicka in styling som objekt också i style-proppen.
00:10:37
Det blir populärt. Men nu i fritiden skriver de flesta CSS/JS-bibliotek.
00:10:42
Då kör de något som heter template literal.
00:10:44
Som är de här... Jag vet inte vad de heter. Backticks, typ.
00:10:48
Man kan göra en multiline-sträng, är väl idén bakom dem.
00:10:55
Ja.
00:10:57
Då kan man göra smarta saker som att du skriver "styled.div" och sen skriver du bara...
00:11:03
Det ser jävligt skumt ut när man ser det för första gången.
00:11:07
Då ser det ut som att jag skriver "style.div" och så kommer det en textsträng direkt efteråt.
00:11:13
Det är liksom inga parenteser, ingenting. Och det ser så jävla konstigt ut.
00:11:16
Jag fattade fan ingenting i början när jag kollade på det.
00:11:19
Men det är någon kortsyntax för att skriva en funktion som tar emot en sådan sträng.
00:11:25
Och då kan man skriva CSS, om vi pratar CSS in JS, så kan man skriva CSS som
00:11:32
exakt ser ut i CSS.
00:11:35
Som om du skriver in CSS-fil. Och det är ju en stor fördel tycker jag.
00:11:40
Ja, och så en sån här template-grej. Det är lite som om man har stött på att skriva
00:11:48
på samma sätt kan man skriva GraphQL-frågor i JSX också när man använder en sån här template-backtick-grej.
00:11:54
Man trycker in hela frågan som en sträng.
00:11:58
Ja, precis. Det känns som att det har kommit ganska mycket på de sista åren i de moderna verktyg.
00:12:03
Då använder man template literals för att skicka in när man har någonting som inte är JavaScript, som ska vara text.
00:12:12
Så använder man sådana. Just idag finns det också väldigt mycket tooling runt omkring så du kan få syntax highlighting och
00:12:18
autocomplete och allt vad du nu vill inuti de här som är bara strängar egentligen.
00:12:23
Jag är lite, det känns som att jag har missat det här med style i JavaScript, i JS. För jag hade en mellantid här då jag körde rätt mycket CSS-modul.
00:12:40
Det blir ju en sån scoped CSS. Man kan fortfarande köra en CSS-fil, man kan fortfarande köra en preprocessor.
00:12:50
Men du skapar upp en stylefil per komponent egentligen och sen så importerar det som en modul.
00:12:57
Vilket du gör i din paketeringslösning och så. Så kan du lägga till att du hashar klassnamnen så alla blir unika.
00:13:07
Så det blir ju egentligen en enda stor stylefil men den blir ju namngiven så att det blir skapat per komponent.
00:13:16
Och jag tyckte ju det var ganska nice när det kom men det var ju säkert för att man gick från det här med hur ska jag organisera mina CSS-filer, hur ska jag göra det här och namngivningen och jada jada jada och vem och hur ska jag tänka det till att man bara kunde ha en fil per komponent.
00:13:32
Och sen så hade man liksom hundra component style filer där alla hade som yttersta klassnamn "component" eller "container" menar jag.
00:13:44
Så det blev många så, men det funkade och det var ändå ganska skönt.
00:13:48
Det var lite befriande på något sätt att allt inte behövde vara hundra procent namngivet.
00:13:55
Och sen blev det mycket så här att det går ju att jobba med det, att specifikt säga att jag vill att den här klassen ska vara global eller plocka in en förälder som är global och sådana här och lite sådana saker.
00:14:08
Så det gick ju att göra lite nya saker på något sätt.
00:14:12
Så det tyckte jag var ganska stort när det kom, eller inte när det kom men när jag började jobba i det skulle jag vilja säga.
00:14:20
Sen har jag väl kommit mer in på det här med Style Components eller Style i JS.
00:14:31
Men det jag inte förstår är om man tar Style Components och ändå delar upp det i två olika filer.
00:14:40
För det förstår jag inte riktigt. För jag tänkte att hela poängen med Style Components och sådana saker skulle vara att man hade det på samma ställe som sin JSX.
00:14:48
Jo, precis. Det skulle jag vilja säga att det är för de flesta fall.
00:14:54
Det beror lite på vad du bygger.
00:14:57
Bygger du någon typ av komponentbibliotek,
00:15:00
eller någon style guide,
00:15:02
då kan det vara att du behöver inte skapa upp komponenter
00:15:08
för att applicera någon styling, utan istället skapar upp en style component.
00:15:12
Det är lätt att säga style component,
00:15:14
Det var det första CSS/JS-libbet som blev stort i alla fall.
00:15:18
Jag säger nog det mycket nu bara för att jag sitter med MooIs egna sätt att styla och den heter ju Styled.
00:15:28
Ja, exakt. Jag tror att alla lib som har kommit efter det finns Emotion och Stitches.
00:15:36
Det finns extremt många som försöker göra lite varianter på det Styled Components gör.
00:15:43
Men för din fråga så är det lite så att jag brukar också gilla co-locata.
00:15:50
Om den här komponenten ska använda, dens styling, den kan typ ligga i samma fil.
00:15:55
Så länge den inte blir alldeles för stor. Då kanske man flyttar ut den till en fil som ligger bredvid.
00:15:59
Men i vissa fall kanske man vill lägga lite generiska styled components i en fil.
00:16:08
Om det är ett inputfält som vi bara har stylat.
00:16:11
Då kanske man vill kunna importera det från en plats.
00:16:15
Men att lägga exakt all styling om de är specifika för vissa komponenter känns inte supernyttigt.
00:16:23
Jag greppar ju den när man har generella komponenter eller generella styling som man vill applicera.
00:16:30
Det har jag också gjort. Det är ganska nice egentligen.
00:16:32
Det kan vara ett grid eller det kan vara specifik styling på en knapp eller vad som helst.
00:16:39
Jag har återanvänt det på flera ställen.
00:16:41
Det vill man inte ha en J6 för nödvändigtvis.
00:16:45
Det tycker jag är väldigt trevligt.
00:16:47
Men just den här att splitta upp det.
00:16:49
Man har ju fortfarande det här att man ska hoppa mellan två olika filer för att jobba ihop det till en komponent.
00:16:55
Det tänkte jag ju.
00:16:57
Jag kommer ihåg det var för länge sedan.
00:17:00
Var det inte någon blogg som blev stor om att vanlig CSS är död.
00:17:04
Nu är det bara CSS/CJS som är, har jag för mig att det blev lite kontroversiellt.
00:17:11
Det känns som att det har varit en del drama kring just CSS.
00:17:15
Ja, jag tror det kan ha varit väldigt länge sedan.
00:17:21
Men just den att, varför ska du ha det på flera ställen?
00:17:25
Du ska ha allt på samma ställe. Jag vet inte vad jag vill komma med här.
00:17:29
Ingenstans säkert.
00:17:31
Nej, men det är lite olika skolor kanske.
00:17:34
Alltså för att det man pratar om egentligen är ju,
00:17:37
och det vi kanske har gått mer och mer mot det som vi pratar om,
00:17:41
att man vill ha alkohol som berör en komponent till ett ställe.
00:17:44
Men tittar man tillbaka på när vi började kanske,
00:17:47
då var ju det här "separation of concerns" åt andra hållet då.
00:17:52
Då var det så här, okej, separera CSS, HTML och JavaScript.
00:17:56
Då var det de concerns som man separerade.
00:17:59
Men i själva verket, och det kanske är lite vertikalt, det blir lite silos av det, eller kolumner med olika grejer.
00:18:05
Medan nu har det svängt mycket mer och istället så pratar man om separation of concerns
00:18:10
på horisontellt, att vi delar upp separation efter att den här komponenten är en concern.
00:18:19
Och då vill vi ha allting som berör den komponenten, inklusive CSS, JavaScript och HTML, eller markup, på samma ställe.
00:18:27
Och det känns ju för min del som en oerhört vettig svängning i opinionen.
00:18:34
Ja, jag tycker väl fortfarande att det kan finnas...
00:18:41
Det beror på.
00:18:43
Och det är väl mer att det beror på liksom om det är...
00:18:49
Alltså det beror på hur mycket styling som ska göras, tror jag.
00:18:54
Men just den här Ron Jud skriver att om man kan skriva CSS i Style Component, så det kanske tilltalar mig.
00:19:03
Men det är också den här, när man har projekt som egentligen bara typ är fem divvar, men sen bara är styling, så känns det ändå så här jobbigt att skriva.
00:19:12
Det är templatespråk. Jag vill ha att den ska formatera åt mig och skriva ut saker åt mig.
00:19:22
Det är hjälp. Jag vill ha hjälp.
00:19:27
Du vill bara ha hjälp.
00:19:29
Jag vill bara ha hjälp.
00:19:31
Absolut. Jag tänker att en grej är väl att toolingen runtom styled components eller CSS/JS idag är så pass bra att du kan få allt det.
00:19:41
Oavsett vilket sätt du skriver på.
00:19:43
Det är väl kanske en grej.
00:19:45
Men sen håller jag med dig om att ibland kanske man vill...
00:19:47
Ibland kanske det är lite överdrivet.
00:19:51
För det finns ju också nackdelar med det.
00:19:53
Många av de här CSS/JS-libben har ju till exempel en performance-kostnad.
00:20:00
Som man kanske inte tänker på ofta för att man tänker att det är bara CSS.
00:20:04
Men eftersom, till exempel Site Components, nu vet jag inte om de har ändrats i de senaste versionerna,
00:20:09
där är det ju att allting sker i Client-side.
00:20:12
Så att all CSS beräknas i Client-side.
00:20:17
Det finns många andra libs som försöker lösa det här genom att göra det till static generation.
00:20:23
När du bygger din site genereras all CSS som behövs.
00:20:27
Och det försöker vi lösa lite.
00:20:31
Men som du säger så kanske man
00:20:33
inte behöver sträcka sig efter något verktyg. Man kan bara skriva plain CSS.
00:20:39
Men det blir fortfarande så här att går man tillbaka från
00:20:42
hela vägen från Style Component eller CSS in JS till
00:20:45
till vanlig CSS då tappar man ju så oerhört mycket.
00:20:50
Du kan inte nästla saker.
00:20:52
Bara det här skaver det redan för mig.
00:20:57
Jag kommer ihåg när vi körde det här anordnade Code in the Dark.
00:21:02
Just det.
00:21:03
Som du anordnade bland annat på jobbet.
00:21:08
Jag var med och tävlade.
00:21:10
Och man skulle skriva allting i, för det värsta, måste jag göra en style tagg?
00:21:14
Hur funkar det? Hur stoppar jag in CSS i markupen?
00:21:18
Och vart lägger jag den? Och är saker platta?
00:21:20
Vart ska det vara semicolon? Ska det inte vara så?
00:21:22
Alltså det var kaos.
00:21:24
För att man är som du säger så väldigt långt bort ifrån det idag på något sätt.
00:21:30
Och det kanske inte är något fel i sig, men det är så det är i grunden.
00:21:40
Det känns som att man borde ha med sig det för att kunna bygga små saker utan alla fem miljoner verktyg.
00:21:47
Ja, exakt. Jag tror fortfarande att även om du skriver din CSS i JavaScript eller hur du nu vill skriva den, så krävs det fortfarande en förståelse för CSS.
00:21:59
Kanske att du slipper vissa grejer som Cascaden eller specificiteten. Jävla svårt ord att säga det.
00:22:07
Eller sådana saker, att du slipper det. Men det finns så oerhört mycket i CSS som inte försvinner bara för att du skriver på ett annat sätt.
00:22:18
Jag tror kanske att vi pratade om det i någon tidigare avsnitt, att jag köpte en CSS-kurs för ett tag sedan.
00:22:23
Alltså som verkligen är en basic CSS-kurs. Och har redan lärt mig extremt mycket av den.
00:22:29
mycket av den. Och nu har jag inte kollat klart på alla delar som finns, men det är så spännande att jag har jobbat som webbusinvecklare i så pass många år ändå.
00:22:38
Eller börjar bli i alla fall. Och liksom inte hade stenkoll på hur margin collapse funkar. Och har ändå suttit och slitit med att man upptäckt en bugg som beror på det.
00:22:50
Och man bara "ah, varför blir det så här?"
00:22:52
Och så sitter man och ändrar tills det funkar istället för att ta reda på vad det faktiskt beror på.
00:22:56
Det här betyder att jag måste kolla upp "margin collapse" för att jag har också jobbat många år och kan inte det.
00:23:04
Nej, det känns som en sak som många missar att det finns över huvud taget.
00:23:10
Och sen blir man frustrerad av det.
00:23:15
Men ja, jag märkte det blir en liten skillnad i, för när jag körde CSS-modules, då handlade ju allting om klassnamn.
00:23:26
Så det var väldigt mycket, du skulle skapa klasser för allting, så att du kunde sätta klassnamn, så att du kunde styla specifikt den markupen som du ville styla.
00:23:37
Och nu när jag sitter mer med att styla i sexbilarna så har jag väl kommit på mig själv,
00:23:43
alltså dels att man inte kanske gör klassnamn då,
00:23:47
men jag orkar ju inte göra en ny komponent för att styla någonting.
00:23:54
Så jag har ju börjat köra väldigt mycket med "first child"
00:23:59
av det närmsta barnet, inte det här barnet av den här elementstypen.
00:24:05
Jag har börjat gå jättemycket för sådana saker istället för att jag har blivit lite lat.
00:24:12
Ja, antingen lat eller smidig.
00:24:18
Det beror på, det blir en avvägning vad som är vettigt och vad som inte.
00:24:26
För det kanske inte är vettigt att sätta klassnamn på exakt allting.
00:24:31
Jag vet att när man kör en stack-komponent,
00:24:36
en komponent som bara tar en sak och gör en hög av det med lite spacing emellan.
00:24:42
Då brukar jag använda till exempel
00:24:45
Not First Child och så sätter jag Margin Top, till exempel.
00:24:50
Gud, ja, det gör jag alltid.
00:24:52
Då känns det vettigt att använda de här, för man skulle ju kunna göra en mer
00:24:56
komplicerad lösning och sätta klasser på alla barn utom första barnet.
00:25:00
Men då blir det mer avancerat. Nu är det här kanske ett extremt exempel, men för att illustrera det bara.
00:25:06
Ja, och ibland tänker jag att jag gör mig själv en okänslig för att när jag sitter i kontextet så blir det väldigt tydligt.
00:25:14
Och sen går man tillbaka ett tag senare och bara "Okej, så first child that is a div and not a pie, that is not the first child of the last child".
00:25:24
Vad är det jag pekar på? Det blir mindre läsbart från ett annat kontext.
00:25:33
Jo, det känns som att det finns någon gräns där någonstans.
00:25:37
När man går in i ett övertool som försöker hitta var CSS kommer ifrån och det tar en kvart.
00:25:42
Då kanske man har dragit det lite långt.
00:25:45
Ja, absolut. Så gör jag inte.
00:25:48
Jag har ändå varit nere på typ tre nivåer eller någonting och kommit på mig själv.
00:25:54
Men det är jävla göttigt i stunden när det bara funkar på något sätt också.
00:25:58
Ja verkligen. Jag tänker också att CSS idag beroende på vilka browsers som måste stödja.
00:26:06
Nu dör ju IE 11 snart.
00:26:10
15 juni 2022.
00:26:12
Jag tror att det kan vara något sånt.
00:26:14
Då blir det lite lättare.
00:26:17
Men det finns ju så mycket modern CSS idag.
00:26:20
Som gör att det krävs väldigt mycket mindre lösningar.
00:26:26
Det är inte säkert att om du sträcker efter CSS i en JS för att kunna köra variabler i den.
00:26:33
Då behöver du inte göra det längre för det finns variabler i CSS.
00:26:35
Till exempel.
00:26:37
Sträcker du det efter bara för att göra en viss sak så finns det ofta lösningar i CSS.
00:26:42
Ja, så är det verkligen.
00:26:48
Det är kul att du sa det här med att det är med kursen och att du inte kan de grundläggande sakerna på CSS.
00:26:53
Det känns ju på något sätt som att vi kommer ännu längre ifrån att lära oss de grundläggande sakerna i CSS
00:26:58
ju mer vi trycker in den i JavaScripten.
00:27:01
Ja, absolut. Det håller jag med om.
00:27:03
Därför tycker jag att det är ganska viktigt att du kan skriva CSS med exakt samma syntax som du gör om du skriver i en CSS-fil.
00:27:13
Även om det blir lite syntaktiskt socker ovanpå, som att man kan nästla till exempel, så tycker jag det är vitt att du inte behöver skriva det som ett javskript objekt
00:27:23
där de heter lite andra saker, där det är typ Pascal case istället för kebab case eller vad det nu är i CSS.
00:27:31
Det var någon som sa att det var otroligt mycket lättare att använda typ logik i Ifs & Buts, inte den här stylingen, men den här stylingen i Style Components och sådana bitar.
00:27:48
Men jag har inte riktigt stött på det.
00:27:50
Det blir ju lite lättare för den kan ju generera upp olika klasser åt dig.
00:27:57
I och med att din CSS kan ta props.
00:28:02
Du kan skicka in props till din Style Components och då kan den generera upp det.
00:28:06
Annars skulle man inte ha det så måste man ju ha flera klasser.
00:28:10
Lite det här modifier som vi pratade om i BEM.
00:28:14
Det tänker jag kanske gör det lite lättare.
00:28:18
Men absolut, det finns definitivt inte så stora skillnader som folk vill få det till.
00:28:26
Jag undrar vart vi kommer hamna. Undrar om vi kommer röra oss ännu längre bort?
00:28:34
Ja, det är en väldigt bra fråga. Jag tycker det är väldigt spännande att se vad som blir nästa stora grej.
00:28:40
Jag tänker en grej, vi tror att vi börjar röra oss mot slutet av tiden, men en grej som jag tycker är så jävla spännande och rolig
00:28:46
när vi pratar CSS är ju att något som heter container queries är på G.
00:28:52
Det är väl liksom "approved" i working-gruppen för CSS att det kommer in i standarden.
00:28:59
Och det är ju då, det finns ju liksom queries idag för att typ säga,
00:29:05
"Okej, hur stort fönster har jag?" och därför kan man göra responsive styling.
00:29:08
Men här blir det istället att du kan göra, anpassa din styling efter typ
00:29:14
hur stor din förälder är.
00:29:16
Och det kommer ju att bli magiskt.
00:29:19
Alltså för då kan du ha komponenter som inte anpassar sig efter storleken på
00:29:23
fönstret utan anpassar sig efter kontexten de befinner sig i på sajten.
00:29:29
Ja, det är ju stort.
00:29:30
Så att sätter de i en smal container då kan de helt plötsligt bli avlånga.
00:29:34
Och har du dem i en bred container
00:29:36
då kan det bli ett liggande kort istället för ett stående.
00:29:38
Det kommer att vara så jäkla nice.
00:29:42
Ja, jag tror också det. Det kommer bli jävligt många breakpoint-värden att hålla reda på.
00:29:49
Jag tänker att det blir lättare.
00:29:52
För att helt plötsligt är breakpoint-värden också co-locatade till komponenten.
00:29:57
Ja, precis. Då blir det så här, vilket var det i den här och vilket gjorde den här?
00:30:01
Ja, så är det ju. Man kommer behöva hoppa runt lite mer.
00:30:04
Det blir inte den här globala, att vi har våra breakpoints i fönstret.
00:30:08
Här blir det mer att komponenterna passar sig.
00:30:10
Men det känns också som att det blir så mycket enklare att utveckla komponenterna.
00:30:14
Då kan de verkligen vara fristående.
00:30:18
Oavsett var man använder dem.
00:30:21
Speciellt för komplexa layouten.
00:30:24
Om fönstret är stort, då har du komponenter som kanske är mindre än om det är mellanstort.
00:30:32
Då ska den komponenten vara större, för det ska vara färre som får plats i en rad.
00:30:36
och då ska innehållet bli till sig alldeles där.
00:30:38
Så jag får typ rysningar att behöva tänka på och läsa det nu.
00:30:41
- Jag tänkte på ett exempel som jag tänkte på.
00:30:43
Jag håller på med ett litet hobbyprojekt nu där jag har lite drag-and-drop.
00:30:45
Vi kanske återkommer till det i en senare avsnitt.
00:30:48
Men bara då att kunna ha samma komponent som renderas
00:30:52
när jag drag-and-droppar till olika platser som är olika stora
00:30:55
och de ska visas på olika sätt.
00:30:57
Det skulle ju vara så sjukt nice.
00:31:00
- Ja.
00:31:01
- Medan nu blir det mer att man får rendera olika komponenter
00:31:04
baserat på vart i trädet de är.
00:31:08
Just det.
00:31:10
Fan, vad länge sedan jag på riktigt styla någonting från scratch.
00:31:15
Jag sitter ju med projekt som bygger på Material UI Googles komponentbibliotek nu.
00:31:21
Så det blir lite så här.
00:31:23
Nästan saknat det, säger jag nu.
00:31:25
Men om jag väl skulle sitta där och styla så skulle jag nog kanske ångra att jag någonsin sa så.
00:31:30
Ja, det var exakt.
00:31:32
Det finns så många olika sätt att göra på.
00:31:35
Jag tänker att det kanske får vara det för det här avsnittet.
00:31:40
Det får vara det.
00:31:43
Vill man oss något så finns vi som vanligt på Twitter.
00:31:47
Lämna gärna en recension i iTunes så blir vi glada.
00:31:51
Ja, det blir vi.
00:31:54
Anton blir glad. Gör honom glad allihopa.
00:31:57
Vi säger så och hörs om två veckor igen.
00:32:01
Det är jag med, hejdå! - Bye bye!
00:32:03
[Outromusik]
00:32:12
Tack för mig!
Tillbaka upp