Stylus CSS: Skriv renere, mer effektiv CSS-kode

Utforsk Stylus CSS: Et alternativ til tradisjonell CSS

Innen webutvikling er CSS det mest brukte verktøyet for å style applikasjoner. Likevel kan CSS være utfordrende å arbeide med, da det er kjent for å være vanskelig å feilsøke.

Ved å lære å bruke Stylus CSS, vil du oppdage en ny mulighet med en av de mest anerkjente CSS-forprosessorene på markedet.

Hva er en CSS-forprosessor?

CSS-forprosessorer er verktøy som forenkler skriving av CSS. De kompilerer kode fra deres egne tilpassede syntakser til det velkjente .css-formatet som nettlesere forstår.

CSS-forprosessorer, som for eksempel Sass, tilbyr avanserte funksjoner som løkker, mixins, nestede selektorer og if/else-setninger. Disse funksjonene gjør det lettere å vedlikeholde CSS-koden din, spesielt i større teamprosjekter.

For å dra nytte av en CSS-forprosessor, må du installere kompilatoren i ditt lokale utviklingsmiljø eller på produksjonsserveren. Visse frontend-byggeverktøy, som Vite, lar deg integrere CSS-forprosessorer som LessCSS i prosjektet ditt.

Hvordan Stylus CSS fungerer

For å installere Stylus lokalt trenger du Node.js og enten Node Package Manager (NPM) eller Yarn installert. Kjør følgende kommando i terminalen:

npm install stylus

Eller:

yarn add stylus

Hver Stylus CSS-fil har filendelsen .styl. Etter at du har skrevet Stylus CSS-koden din, kan du kompilere den ved å bruke denne kommandoen:

stylus .

Dette vil kompilere alle .styl-filene og generere .css-filer i gjeldende mappe. Stylus-kompilatoren kan også konvertere .css-filer til .styl med –css-flagget. For å konvertere en .css-fil til .styl-formatet, bruk denne kommandoen:

stylus --css style.css style.styl

Syntaks og foreldrevelgere i Stylus CSS

I tradisjonell CSS definerer du en stilblokk ved hjelp av krøllparenteser; unnlater du å inkludere disse, kan det føre til feil i stilene. I Stylus CSS er bruk av krøllparenteser valgfritt.

Stylus bruker en Python-lignende syntaks, noe som betyr at du kan definere blokker ved hjelp av innrykk, slik som dette:

.container
    margin: 10px

Kodeblokken over vil bli kompilert til følgende CSS:

.container {
  margin: 10px;
}

På samme måte som i CSS-forprosessorer som Less, kan du referere til en foreldrevelger med &-tegnet:

button
    color: white;
    &:hover
        color: yellow;

Som kompilert blir:

button {
  color: #fff;
}
button:hover {
  color: #ff0;
}

Hvordan bruke variabler i Stylus CSS

I CSS-forprosessorer som Less CSS, definerer du variabler med @-tegnet, mens tradisjonell CSS bruker «–» for å definere en variabel.

I Stylus er dette litt annerledes: du trenger ikke et spesielt symbol for å definere en variabel. Istedenfor definerer du variabelen ved å bruke et likhetstegn (=) for å knytte den til en verdi:

bg-color = black

Du kan nå bruke variabelen i .styl-filen på denne måten:

div
    background-color: bg-color

Kodeblokken over vil bli kompilert til følgende CSS:

div {
  background-color: #000;
}

Du kan definere en nullvariabel med parenteser. For eksempel:

empty-variable = ()

Du kan referere til andre egenskapsverdier ved å bruke @-symbolet. Hvis du for eksempel ønsker å sette høyden på en div til halvparten av bredden, kan du gjøre dette:

element-width = 563px
div
    width: element-width
    height : (element-width / 2)

Det ville fungere, men du kan også unngå å opprette variabelen helt og referere til breddeegenskapens verdi istedenfor:

div
    width: 563px
    height: (@width / 2)

I denne kodeblokken lar @-symbolet deg referere til den faktiske breddeegenskapen på diven. Uansett hvilken tilnærming du velger, vil du, når du kompilerer .styl-filen, få følgende CSS:

div {
  width: 563px;
  height: 281.5px;
}

Funksjoner i Stylus CSS

Du kan lage funksjoner som returnerer verdier i Stylus CSS. La oss si at du vil sette teksten til å være sentrert i en div hvis bredden er større enn 400px, eller venstrejustert hvis bredden er mindre enn 400px. Da kan du lage en funksjon som håndterer denne logikken.

alignCenter(n)
    if (n > 400)
        'center'
    else if (n < 200)
        'left'

div {
    width: 563px
    text-align: alignCenter(@width)
    height: (@width / 2)
}

Denne kodeblokken kaller alignCenter-funksjonen og sender breddeegenskapens verdi ved å referere til den med @-symbolet. alignCenter-funksjonen sjekker om parameteren, n, er større enn 400 og returnerer «center» hvis det stemmer. Hvis n er mindre enn 200, returnerer funksjonen «left».

Når kompilatoren kjører, skal den generere følgende utdata:

div {
  width: 563px;
  text-align: 'center';
  height: 281.5px;
}

I de fleste programmeringsspråk tildeler funksjoner parametere basert på rekkefølgen du gir dem. Dette kan føre til feil som et resultat av å sende parametere i feil rekkefølge, noe som er mer sannsynlig jo flere parametere du må sende inn.

Stylus tilbyr en løsning: navngitte parametere. Bruk dem i stedet for ordnede parametere når du kaller en funksjon, slik som dette:

subtract(b:30px, a:10px)

Når du bør vurdere å bruke en CSS-forprosessor

CSS-forprosessorer er svært kraftige verktøy som du kan bruke for å effektivisere arbeidsflyten din. Å velge det riktige verktøyet for prosjektet ditt kan bidra til å forbedre produktiviteten din. Hvis prosjektet ditt kun krever en liten mengde CSS, kan det være unødvendig å bruke en CSS-forprosessor.

Hvis du derimot bygger et større prosjekt, kanskje som en del av et team, som er avhengig av en stor mengde CSS, bør du vurdere å bruke en forprosessor. De tilbyr funksjoner som funksjoner, løkker og mixins, som gjør det lettere å style komplekse prosjekter.